Author: sletellier Date: 2011-12-27 10:25:58 +0100 (Tue, 27 Dec 2011) New Revision: 12 Url: http://forge.codelutin.com/repositories/revision/jmexico/12 Log: Allow change order of children tags Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java =================================================================== --- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-22 16:52:06 UTC (rev 11) +++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-27 09:25:58 UTC (rev 12) @@ -65,6 +65,7 @@ import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_DESCRIPTION; import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_ID; import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_LICENCE; +import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR; import static fr.reseaumexico.model.MexicoXmlConstant.FACTORS; import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_DESCRIPTION; import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_ID; @@ -161,40 +162,45 @@ String id = parser.getAttributeValue(null, FACTOR_ID); factor.setId(id); - // parse description - int eventType = parser.nextTag(); - if (eventType == XmlPullParser.START_TAG && - parserEqual(parser, FACTOR_DESCRIPTION)) { - factor.setDescription(parser.nextText()); + // while all child attributes is not parsed + while (!(parser.getEventType() == XmlPullParser.END_TAG && + parserEqual(parser, FACTOR))) { - // read function close tag - eventType = parser.nextTag(); - } + // parse description + int eventType = parser.nextTag(); + if (eventType == XmlPullParser.START_TAG && + parserEqual(parser, FACTOR_DESCRIPTION)) { + factor.setDescription(parser.nextText()); - // domain - if (eventType == XmlPullParser.START_TAG && - parserEqual(parser, DOMAIN)) { - factor.setDomain(parseDomain(parser)); - } + // read function close tag + eventType = parser.nextTag(); + } - // features - if (parser.getEventType() == XmlPullParser.START_TAG && - parserEqual(parser, FEATURE)) { + // domain + if (eventType == XmlPullParser.START_TAG && + parserEqual(parser, DOMAIN)) { + factor.setDomain(parseDomain(parser)); + } - List<Feature> features = Lists.newArrayList(); + // features + if (parser.getEventType() == XmlPullParser.START_TAG && + parserEqual(parser, FEATURE)) { - while (parserEqual(parser, FEATURE)) { + List<Feature> features = Lists.newArrayList(); - // feature - features.add(parseFeature(parser)); + while (parserEqual(parser, FEATURE)) { - // read feature close tag - parser.nextTag(); + // feature + features.add(parseFeature(parser)); - // read next tag - parser.nextTag(); + // read feature close tag + parser.nextTag(); + + // read next tag + parser.nextTag(); + } + factor.setFeatures(features); } - factor.setFeatures(features); } // keep factors @@ -222,58 +228,63 @@ String nominaleValue = parser.getAttributeValue(null, DOMAIN_NOMINAL_VALUE); domain.setNominalValue(nominaleValue); - // distributionParameters - int eventType = parser.nextTag(); - if (eventType == XmlPullParser.START_TAG && - parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) { + // while all child attributes is not parsed + while (!(parser.getEventType() == XmlPullParser.END_TAG && + parserEqual(parser, DOMAIN))) { - List<DistributionParameter> distributionParameters = Lists.newArrayList(); - while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) { - DistributionParameter distributionParameter = new DistributionParameterImpl(); + // distributionParameters + int eventType = parser.nextTag(); + if (eventType == XmlPullParser.START_TAG && + parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) { - // name - String name = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_NAME); - distributionParameter.setName(name); + List<DistributionParameter> distributionParameters = Lists.newArrayList(); + while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) { + DistributionParameter distributionParameter = new DistributionParameterImpl(); - // value - // TODO sletellier 20111215 : take care of type - String value = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE); - distributionParameter.setValue(value); + // name + String name = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_NAME); + distributionParameter.setName(name); - // valueType - String valueType = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE_TYPE); - distributionParameter.setValueType(ValueType.valueOf(valueType)); + // value + // TODO sletellier 20111215 : take care of type + String value = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE); + distributionParameter.setValue(value); - distributionParameters.add(distributionParameter); + // valueType + String valueType = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE_TYPE); + distributionParameter.setValueType(ValueType.valueOf(valueType)); - // read close tag - parser.nextTag(); + distributionParameters.add(distributionParameter); - // read next start tag - eventType = parser.nextTag(); + // read close tag + parser.nextTag(); + + // read next start tag + eventType = parser.nextTag(); + } + domain.setDistributionParameters(distributionParameters); } - domain.setDistributionParameters(distributionParameters); - } - // level - if (eventType == XmlPullParser.START_TAG && - parserEqual(parser, DOMAIN_LEVEL)) { + // level + if (eventType == XmlPullParser.START_TAG && + parserEqual(parser, DOMAIN_LEVEL)) { - List<Level> levels = Lists.newArrayList(); - while (parserEqual(parser, DOMAIN_LEVEL)) { - Level level = new LevelImpl(); + List<Level> levels = Lists.newArrayList(); + while (parserEqual(parser, DOMAIN_LEVEL)) { + Level level = new LevelImpl(); - // value - String value = parser.getAttributeValue(null, LEVEL_VALUE); - level.setValue(value); + // value + String value = parser.getAttributeValue(null, LEVEL_VALUE); + level.setValue(value); - // weight - String weight = parser.getAttributeValue(null, LEVEL_WEIGHT); - level.setWeight(Integer.valueOf(weight)); + // weight + String weight = parser.getAttributeValue(null, LEVEL_WEIGHT); + level.setWeight(Integer.valueOf(weight)); - levels.add(level); + levels.add(level); + } + domain.setLevels(levels); } - domain.setLevels(levels); } return domain; }