コード例 #1
0
        private void addElementInArrayWithoutIdRef(Object _value)
        {
            if (isPrimitive(_value))
            {
                ElementsSerial elt_ = createPrimitive(_value, false, null);
                getComponents().Add(elt_);
            }
            else
            {
                TemplateSerial elt_ = createComposite(_value, false, null, false);
                getNews().Add(elt_);
                getComponents().Add(elt_);
                return;

                /* if (!SerializeXmlObject.isCheckReferences())
                 * {
                 * getNews().Add(elt_);
                 * getComponents().Add(elt_);
                 * return;
                 * }
                 * MyList<TemplateSerial> records_ = ElementsSerial.findSerialisableInList(_value, getAllComposites());
                 * if (records_.isEmpty())
                 * {
                 * getNews().Add(elt_);
                 * getAllComposites().Add(elt_);
                 * getComponents().Add(elt_);
                 * }
                 * else {
                 * throw new RefException();
                 * }*/
            }
        }
コード例 #2
0
ファイル: TemplateSerial.cs プロジェクト: Cardman/tutorials
        public override XmlElement serialize(XmlDocument _doc)
        {
            XmlElement node_ = _doc.CreateElement(ElementsSerial.getType(getValueClass()));

            if (getId() != null)
            {
                node_.SetAttribute(ID, getId().ToString());
            }
            if (getRef() != null)
            {
                node_.SetAttribute(REF, getRef().ToString());
            }
            if (getField() != null && !getField().isEmpty())
            {
                node_.SetAttribute(FIELD, getField());
            }
            if (getClassName() != null)
            {
                node_.SetAttribute(CLASS, getClassName());
            }
            if (isKeyOfMap())
            {
                node_.SetAttribute(KEY, EMPTY_STRING);
            }
            return(node_);
        }
コード例 #3
0
ファイル: ComparatorSerial.cs プロジェクト: Cardman/tutorials
        public override void setElementSerial(ElementsSerial _e, ElementsSerial _newE)
        {
            string str_ = _e.getClassName();
            Type   class_;

            if (str_.Contains(SPECIAL_SEP))
            {
                string types_ = str_.Substring(str_.IndexOf(SPECIAL_SEP));
                class_ = Constants.classForName(str_, types_);
            }
            else
            {
                class_ = Constants.classForName(str_);
            }
            FieldInfo field_ = SerializeXmlObject.getField(class_, _e.getField());

            field_.SetValue(value, _newE.getValue());

            /*for (Field f: cl_.getDeclaredFields()) {
             * if (!f.getName().equals(_e.getField()))
             * {
             *  continue;
             * }
             * if (!SerializeXmlObject.isUpdateFinalFields())
             * {
             *  if (Modifier.isFinal(f.getModifiers()))
             *  {
             *      continue;
             *  }
             * }
             * f.setAccessible(cl_.getAnnotation(RwXml.class)!=null);
             *              f.set(value, _newE.getValue());
             *              break;
             *      }*/
        }
コード例 #4
0
        private static ElementsSerial createPrimitive(
            Object _value, bool _isKey, Type _cl, String _field)
        {
            ElementsSerial elt_ = createPrimitive(_value, _isKey, _field);

            elt_.setClassName(Constants.getTypeFullString(_cl));
            return(elt_);
        }
コード例 #5
0
        public override bool Equals(Object _arg0)
        {
            if (_arg0 == null)
            {
                return(false);
            }
            if (!(_arg0 is ElementsSerial))
            {
                return(false);
            }
            ElementsSerial e_ = (ElementsSerial)_arg0;

            return(getValue() == e_.getValue());
        }
コード例 #6
0
        private void addElementWithoutIdRef(Object _value,
                                            bool _isKey, Type _cl, String _fieldName, bool _isComparator)


        {
            if (isPrimitive(_value))
            {
                ElementsSerial elt_ = createPrimitive(_value, _isKey, _cl, _fieldName);
                getComponents().Add(elt_);
            }
            else
            {
                TemplateSerial elt_ = createComposite(_value, _isKey, _cl, _fieldName, _isComparator);
                if (elt_ == null)
                {
                    return;
                }
                if (_isComparator)
                {
                    getAllImplicitComparators().Add(elt_);
                }
                getNews().Add(elt_);
                getComponents().Add(elt_);
                return;

                /*
                 * if (!SerializeXmlObject.isCheckReferences())
                 * {
                 * getNews().Add(elt_);
                 * getComponents().Add(elt_);
                 * return;
                 * }
                 * MyList<TemplateSerial> records_ = ElementsSerial.findSerialisableInList(_value, getAllComposites());
                 * if (records_.isEmpty())
                 * {
                 * getNews().Add(elt_);
                 * getAllComposites().Add(elt_);
                 * getComponents().Add(elt_);
                 * }
                 * else {
                 * throw new RefException();
                 * }*/
            }
        }
コード例 #7
0
        public override void setElementSerial(ElementsSerial _e, ElementsSerial _newE)
        {
            int l_ = array.Length;

            for (int i = 0; i < l_; i++)
            {
                if (!indexesRef.contains(i))
                {
                    continue;
                }
                if (!indexesRef.getVal(i).Equals(((TemplateSerial)_e).getRef()))
                {
                    continue;
                }
                Object o_ = _newE.getValue();
                //			if (o_ != null) {
                //				if (!classElements.isInstance(o_)) {
                //					throw new IllegalArgumentException();
                //				}
                //			}
                array.SetValue(o_, i);
            }
        }
コード例 #8
0
        public static Object fromXmlStringObject(String _xmlString)
        {
            XmlElement root_ = XmlParser.documentElement(XmlParser.parseSax(_xmlString));

            try {
                ElementsSerial elt_ = createPrimitive(root_);
                if (elt_ != null)
                {
                    return(elt_.getValue());
                }
            } catch (Exception) {
            }
            MyList <XmlNode> currentNodesToBeRead_ = new MyList <XmlNode>();

            currentNodesToBeRead_.Add(root_);
            MyList <TemplateSerial> currentSerializableElements_ = new MyList <TemplateSerial>();
            ObjectSerial            rootElement_;

            rootElement_ = ObjectSerial.newSerial(root_, false);
            currentSerializableElements_.Add(rootElement_);
            MyList <XmlNode>        newNodesToBeRead_        = new MyList <XmlNode>();
            MyList <TemplateSerial> newSerializableElements_ = new MyList <TemplateSerial>();
            MyList <ObjectSerial>   notEmptyMaps_            = new MyList <ObjectSerial>();
            bool modif_ = true;

            while (modif_)
            {
                modif_ = false;
                newSerializableElements_ = new MyList <TemplateSerial>();
                newNodesToBeRead_        = new MyList <XmlNode>();
                int len_;
                len_ = currentNodesToBeRead_.size();
                for (int i = List.FIRST_INDEX; i < len_; i++)
                {
                    XmlNode        currentNode_  = currentNodesToBeRead_.get(i);
                    TemplateSerial composite_    = currentSerializableElements_.get(i);
                    bool           isTreeMap_    = false;
                    bool           containsTree_ = false;
                    foreach (XmlNode nCh_ in XmlParser.childrenNodes(currentNode_))
                    {
                        if (!(nCh_ is XmlElement))
                        {
                            continue;
                        }
                        containsTree_ = nCh_.Attributes.GetNamedItem(TemplateSerial.COMPARATOR) != null;
                        if (containsTree_)
                        {
                            break;
                        }
                    }
                    if (containsTree_)
                    {
                        isTreeMap_ = true;
                    }
                    MyList <ElementsSerial> elt_ = new MyList <ElementsSerial>();
                    foreach (XmlNode n in XmlParser.childrenNodes(currentNode_))
                    {
                        if (!(n is XmlElement))
                        {
                            continue;
                        }
                        try
                        {
                            ArraySerial serialArray_ = ArraySerial.newListSerial(n);
                            elt_.Add(serialArray_);
                            newSerializableElements_.Add(serialArray_);
                            newNodesToBeRead_.Add(n);
                            continue;
                        }
                        catch (NoAttributeForSerializable e_)
                        {
                            throw e_;
                        }
                        catch (ClassFoundException)
                        {
                        }
                        try
                        {
                            ElementsSerial primitive_ = createPrimitive(n);
                            if (primitive_ == null)
                            {
                                throw new NullReferenceException();
                            }
                            elt_.Add(primitive_);
                            continue;
                        }
                        catch (NoAttributeForSerializable e_)
                        {
                            throw e_;
                        }
                        catch (InexistingValueForEnum e_)
                        {
                            throw e_;
                        }
                        catch (FormatException e_)
                        {
                            throw e_;
                        }

                        /*catch (InvocationTargetException e_)
                         * {
                         *  throw e_;
                         * }
                         * catch (InstantiationException e_)
                         * {
                         *  throw e_;
                         * }
                         * catch (SecurityException e_)
                         * {
                         *  throw e_;
                         * }
                         * catch (ClassNotFoundException e_)
                         * {
                         *  throw e_;
                         * }*/
                        catch (NullReferenceException)
                        {
                        }
                        ComparatorSerial cmp_ = getCmpSerial(n, isTreeMap_, composite_);
                        if (cmp_ != null)
                        {
                            elt_.Add(cmp_);
                            newSerializableElements_.Add(cmp_);
                            newNodesToBeRead_.Add(n);
                            continue;
                        }
                        ObjectSerial serial_ = ObjectSerial.newSerial(n, true);
                        elt_.Add(serial_);
                        newSerializableElements_.Add(serial_);
                        newNodesToBeRead_.Add(n);
                    }
                    composite_.appendElementSerialWithoutRef(elt_);
                    if (composite_ is ObjectSerial)
                    {
                        if (!((ObjectSerial)composite_).mapIsEmpty())
                        {
                            notEmptyMaps_.Add((ObjectSerial)composite_);
                        }
                    }
                }
                if (!newSerializableElements_.isEmpty())
                {
                    currentNodesToBeRead_        = new MyList <XmlNode>(newNodesToBeRead_);
                    currentSerializableElements_ = new MyList <TemplateSerial>(newSerializableElements_);
                    modif_ = true;
                }
            }
            List <ObjectSerial> filledMaps_   = new MyList <ObjectSerial>();
            List <ObjectSerial> fillableMaps_ = new MyList <ObjectSerial>();

            /*foreach (ObjectSerial m in notEmptyMaps_) {
             *      if (m.keysAllDifferent()) {
             *              fillableMaps_.Add(m);
             *      }
             * }
             * while (true) {
             *      for (MayBeMap m : fillableMaps_) {
             *              m.setComponents();
             *              filledMaps_.add(m);
             *      }
             *      fillableMaps_.clear();
             *      for (MayBeMap m : notEmptyMaps_) {
             *              if (!m.keysAllDifferent()) {
             *                      continue;
             *              }
             *              if (filledMaps_.containsObj(m)) {
             *                      continue;
             *              }
             *              fillableMaps_.add(m);
             *      }
             *      if (fillableMaps_.isEmpty()) {
             *              break;
             *      }
             * }
             * for (MayBeMap m : notEmptyMaps_) {
             *      if (!filledMaps_.containsObj(m)) {
             *              m.setComponents();
             *      }
             * }*/
            return(rootElement_.getValue());
        }
コード例 #9
0
ファイル: TemplateSerial.cs プロジェクト: Cardman/tutorials
 public abstract void setElementSerial(ElementsSerial _e, ElementsSerial _newE);
コード例 #10
0
ファイル: ObjectSerial.cs プロジェクト: Cardman/tutorials
 public override void setElementSerial(ElementsSerial _e, ElementsSerial _newE)
 {
     /* if(value instanceof List) {
      * int len_ = ((List <?>)value).size();
      * for (int i = Constants.getFirstIndex(); i < len_; i++)
      * {
      * if (!indexesRef.containsKey(i))
      * {
      *   continue;
      * }
      * if (!indexesRef.get(i).equals(((TemplateSerial)_e).getRef()))
      * {
      *   continue;
      * }
      * SET_METHOD.invoke(value, i, _newE.getValue());
      * }
      * }
      * if(value instanceof Map) {
      * int len_ = keys.size();
      * for (int i = Constants.getFirstIndex(); i < len_; i++)
      * {
      * if (!keysIndexesRef.containsKey(i))
      * {
      * continue;
      * }
      * if (!keysIndexesRef.get(i).equals(((TemplateSerial)_e).getRef()))
      * {
      * continue;
      * }
      * keys.set(i, _newE.getValue());
      * }
      * for (int i = Constants.getFirstIndex(); i < len_; i++)
      * {
      * if (!valuesIndexesRef.containsKey(i))
      * {
      * continue;
      * }
      * if (!valuesIndexesRef.get(i).equals(((TemplateSerial)_e).getRef()))
      * {
      * continue;
      * }
      * values.set(i, _newE.getValue());
      * }
      * }
      * Class<?> class_ = Constants.classForName(_e.getClassName());
      * if (!class_.isInstance(value)) {
      * return;
      * }
      * if (_e.getField() == null) {
      * return;
      * }
      * Field field_;
      * try {
      * field_ = class_.getDeclaredField(_e.getField());
      * } catch (NoSuchFieldException exception) {
      * return;
      * }
      * if (!SerializeXmlObject.isUpdateFinalFields()) {
      * if (Modifier.isFinal(field_.getModifiers()))
      * {
      * return;
      * }
      * }
      * if (Modifier.isStatic(field_.getModifiers())) {
      * return;
      * }
      * field_.setAccessible(class_.getAnnotation(RwXml.class)!=null);
      * field_.set(value, _newE.getValue());*/
 }