private static boolean equals(List<StructureValue> structureListA, List<StructureValue> structureListB) { if (null == structureListA && null == structureListB){ return true; } if ((null == structureListA && null != structureListB) || (null != structureListA && null == structureListB)){ return false; } if (structureListA.size() != structureListB.size()){ return false; } // Sort according index List<StructureValue> structureValuesA = sort(structureListA); List<StructureValue> structureValuesB = sort(structureListB); for (int i=0; i < structureValuesA.size() ; i++){ StructureValue structureA = structureValuesA.get(i); StructureValue structureB = structureValuesB.get(i); if (!equals(structureA, structureB)){ return false; } } return true; }
List<StructureMemberValue> structureMemeberValuesA = sortStructureMembers(structureMemeberValueListA); List<StructureMemberValue> structureMemeberValuesB = sortStructureMembers(structureMemeberValueListB); for (int i=0; i < structureMemeberValuesA.size(); i++){ StructureMemberValue structureMemberValueA = structureMemeberValuesA.get(i); StructureMemberValue structureMemberValueB = structureMemeberValuesB.get(i); if (!equals(structureMemberValueA.getStructureValues(), structureMemberValueB.getStructureValues()) || !equals(structureMemberValueA.getValue(), structureMemberValueB.getValue()) || !equals(structureMemberValueA.getIndex(), structureMemberValueB.getIndex())){ return false;
public static boolean equals(ParameterValue valueA, ParameterValue valueB){ // Compare primitive values if (valueA.getPrimitiveValues() != null && valueA.getPrimitiveValues().size() > 0){ if (valueB.getPrimitiveValues() == null || valueB.getPrimitiveValues().size() == 0){ return false; } if (valueA.getPrimitiveValues().size() != valueB.getPrimitiveValues().size()){ return false; } // Sort according index List<PrimitiveValue> primitiveValuesA = sortPrimitiveValues(valueA.getPrimitiveValues()); List<PrimitiveValue> primitiveValuesB = sortPrimitiveValues(valueB.getPrimitiveValues()); for (int i=0; i < primitiveValuesA.size() ; i++){ PrimitiveValue primitiveA = primitiveValuesA.get(i); PrimitiveValue primitiveB = primitiveValuesB.get(i); if (!equals(primitiveA.getIndex(), primitiveB.getIndex()) || !equals(primitiveA.getValue(), primitiveB.getValue())){ return false; } } return true; } // Compare structure values return equals(valueA.getStructureValues(), valueB.getStructureValues()); }
private static List<String> generatePrimitiveParameterList(Map<String, Parameter> parameterMap, NamespaceDefinition namespaceDefinition, List<String> primitiveParameterList, List<String> primitiveArrayParameterList, Map<String, Parameter> structureDefinitionMap, Map<String, List<String>> structureMemberMap) { for (Parameter parameter : namespaceDefinition.getParameters()){ parameterMap.put(parameter.getName(), CCPUtil.clone(parameter)); if (null == parameter.getStructureDefinition()){ if (!parameter.isIsArray()){ primitiveParameterList.add(parameter.getName()); } else { primitiveArrayParameterList.add(parameter.getName()); } } else { structureDefinitionMap.put(parameter.getName(), CCPUtil.clone(parameter)); List<String> structureMemeberList = new ArrayList<String>(); for (StructureMemberDefinition structureMemberDefinition : parameter.getStructureDefinition().getStructureMemberDefinitions()){ structureMemeberList.add(structureMemberDefinition.getName()); } structureMemberMap.put(parameter.getName(), structureMemeberList); } } return primitiveParameterList; }