From 9c5d6e82b5ce733cf23e4317e3bafaa42c2221ba Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 1 Oct 2014 21:09:06 +0200 Subject: Collection version support, stored as a new final component of the Collection path. Null version implies "last". --- .../com/c2kernel/entity/imports/ImportAggregation.java | 12 +++++++++--- .../c2kernel/entity/imports/ImportAggregationMember.java | 4 +++- .../com/c2kernel/entity/imports/ImportDependency.java | 16 ++++++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/c2kernel/entity') diff --git a/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java b/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java index 27eb0ed..8a15045 100644 --- a/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java +++ b/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java @@ -2,6 +2,9 @@ package com.c2kernel.entity.imports; import java.util.ArrayList; +import com.c2kernel.collection.Aggregation; +import com.c2kernel.collection.AggregationDescription; +import com.c2kernel.collection.AggregationInstance; import com.c2kernel.collection.MembershipException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.graph.model.GraphPoint; @@ -15,6 +18,7 @@ import com.c2kernel.property.PropertyUtility; public class ImportAggregation { public boolean isDescription; + public Integer version; public ArrayList aggregationMemberList = new ArrayList(); public String name; @@ -29,8 +33,8 @@ public class ImportAggregation { } public com.c2kernel.collection.Aggregation create() throws MembershipException, ObjectNotFoundException { - com.c2kernel.collection.Aggregation newAgg = isDescription?new com.c2kernel.collection.AggregationDescription(name):new com.c2kernel.collection.AggregationInstance(name); - newAgg.setName(name); + Aggregation newAgg = isDescription?new AggregationDescription(name):new AggregationInstance(name); + if (version!= null) newAgg.setVersion(version); for (ImportAggregationMember thisMem : aggregationMemberList) { StringBuffer classProps = new StringBuffer(); if (thisMem.itemDescriptionPath != null && thisMem.itemDescriptionPath.length()>0) { @@ -40,7 +44,9 @@ public class ImportAggregation { } catch (InvalidItemPathException ex) { itemPath = new DomainPath(thisMem.itemDescriptionPath).getItemPath(); } - PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(itemPath); + + String descVer = thisMem.itemDescriptionVersion==null?"last":thisMem.itemDescriptionVersion; + PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(itemPath, descVer); for (PropertyDescription pd : propList.list) { thisMem.props.put(pd.getName(), pd.getDefaultValue()); if (pd.getIsClassIdentifier()) diff --git a/src/main/java/com/c2kernel/entity/imports/ImportAggregationMember.java b/src/main/java/com/c2kernel/entity/imports/ImportAggregationMember.java index 159e02c..3ea5c16 100644 --- a/src/main/java/com/c2kernel/entity/imports/ImportAggregationMember.java +++ b/src/main/java/com/c2kernel/entity/imports/ImportAggregationMember.java @@ -7,6 +7,7 @@ public class ImportAggregationMember { public int slotNo; public String itemDescriptionPath; + public String itemDescriptionVersion = null; public String itemPath; public Geometry geometry; public CastorHashMap props = new CastorHashMap(); @@ -16,9 +17,10 @@ public class ImportAggregationMember { super(); } - public ImportAggregationMember(int slotNo, String itemDescPath, String itemPath, Geometry geometry) { + public ImportAggregationMember(int slotNo, String itemDescPath, String itemDescVersion, String itemPath, Geometry geometry) { this.slotNo = slotNo; this.itemDescriptionPath = itemDescPath; + this.itemDescriptionVersion = itemDescVersion; this.itemPath = itemPath; this.geometry = geometry; } diff --git a/src/main/java/com/c2kernel/entity/imports/ImportDependency.java b/src/main/java/com/c2kernel/entity/imports/ImportDependency.java index c235ba4..dc26551 100644 --- a/src/main/java/com/c2kernel/entity/imports/ImportDependency.java +++ b/src/main/java/com/c2kernel/entity/imports/ImportDependency.java @@ -2,6 +2,8 @@ package com.c2kernel.entity.imports; import java.util.ArrayList; +import com.c2kernel.collection.Dependency; +import com.c2kernel.collection.DependencyDescription; import com.c2kernel.collection.MembershipException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.lookup.DomainPath; @@ -16,8 +18,10 @@ import com.c2kernel.utils.KeyValuePair; public class ImportDependency { public String name; + public Integer version; public boolean isDescription; public String itemDescriptionPath; + public String itemDescriptionVersion = null; public ArrayList dependencyMemberList = new ArrayList(); public CastorHashMap props = new CastorHashMap(); @@ -42,9 +46,17 @@ public class ImportDependency { * @return */ public com.c2kernel.collection.Dependency create() throws MembershipException, ObjectNotFoundException { - com.c2kernel.collection.Dependency newDep = isDescription?new com.c2kernel.collection.DependencyDescription(name):new com.c2kernel.collection.Dependency(name); + Dependency newDep = isDescription?new DependencyDescription(name):new Dependency(name); + if (version!= null) newDep.setVersion(version); if (itemDescriptionPath != null && itemDescriptionPath.length()>0) { - PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getItemPath()); + ItemPath itemPath; + try { + itemPath = new ItemPath(itemDescriptionPath); + } catch (InvalidItemPathException ex) { + itemPath = new DomainPath(itemDescriptionPath).getItemPath(); + } + String descVer = itemDescriptionVersion==null?"last":itemDescriptionVersion; + PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(itemPath, descVer); StringBuffer classProps = new StringBuffer(); for (PropertyDescription pd : propList.list) { props.put(pd.getName(), pd.getDefaultValue()); -- cgit v1.2.3