From b086f57f56bf0eb9dab9cf321a0f69aaaae84347 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 30 May 2012 08:37:45 +0200 Subject: Initial Maven Conversion --- .../java/com/c2kernel/collection/Aggregation.java | 116 +++++++++++++++ .../collection/AggregationDescription.java | 59 ++++++++ .../c2kernel/collection/AggregationInstance.java | 45 ++++++ .../com/c2kernel/collection/AggregationMember.java | 161 ++++++++++++++++++++ .../java/com/c2kernel/collection/Collection.java | 32 ++++ .../c2kernel/collection/CollectionDescription.java | 14 ++ .../com/c2kernel/collection/CollectionMember.java | 38 +++++ .../c2kernel/collection/CollectionMemberList.java | 22 +++ .../java/com/c2kernel/collection/Dependency.java | 117 +++++++++++++++ .../c2kernel/collection/DependencyDescription.java | 53 +++++++ .../com/c2kernel/collection/DependencyMember.java | 152 +++++++++++++++++++ .../c2kernel/collection/MembershipException.java | 21 +++ .../collection/Parent2ChildCollection.java | 127 ++++++++++++++++ .../com/c2kernel/collection/RelationshipUtils.java | 33 +++++ .../gui/model/AggregationVertexFactory.java | 46 ++++++ .../gui/model/AggregationVertexOutlineCreator.java | 44 ++++++ .../gui/view/AggregationMemberRenderer.java | 125 ++++++++++++++++ .../collection/gui/view/CollectionFrame.java | 41 ++++++ .../collection/gui/view/PropertyPanel.java | 37 +++++ .../collection/gui/view/SelectedMemberPanel.java | 164 +++++++++++++++++++++ 20 files changed, 1447 insertions(+) create mode 100644 src/main/java/com/c2kernel/collection/Aggregation.java create mode 100644 src/main/java/com/c2kernel/collection/AggregationDescription.java create mode 100644 src/main/java/com/c2kernel/collection/AggregationInstance.java create mode 100644 src/main/java/com/c2kernel/collection/AggregationMember.java create mode 100644 src/main/java/com/c2kernel/collection/Collection.java create mode 100644 src/main/java/com/c2kernel/collection/CollectionDescription.java create mode 100644 src/main/java/com/c2kernel/collection/CollectionMember.java create mode 100644 src/main/java/com/c2kernel/collection/CollectionMemberList.java create mode 100644 src/main/java/com/c2kernel/collection/Dependency.java create mode 100644 src/main/java/com/c2kernel/collection/DependencyDescription.java create mode 100644 src/main/java/com/c2kernel/collection/DependencyMember.java create mode 100644 src/main/java/com/c2kernel/collection/MembershipException.java create mode 100644 src/main/java/com/c2kernel/collection/Parent2ChildCollection.java create mode 100644 src/main/java/com/c2kernel/collection/RelationshipUtils.java create mode 100644 src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java create mode 100644 src/main/java/com/c2kernel/collection/gui/model/AggregationVertexOutlineCreator.java create mode 100644 src/main/java/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java create mode 100644 src/main/java/com/c2kernel/collection/gui/view/CollectionFrame.java create mode 100644 src/main/java/com/c2kernel/collection/gui/view/PropertyPanel.java create mode 100644 src/main/java/com/c2kernel/collection/gui/view/SelectedMemberPanel.java (limited to 'src/main/java/com/c2kernel/collection') diff --git a/src/main/java/com/c2kernel/collection/Aggregation.java b/src/main/java/com/c2kernel/collection/Aggregation.java new file mode 100644 index 0000000..e869621 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/Aggregation.java @@ -0,0 +1,116 @@ +package com.c2kernel.collection; + + +import com.c2kernel.collection.gui.model.AggregationVertexOutlineCreator; +import com.c2kernel.graph.model.GraphModel; +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.Language; +import com.c2kernel.utils.Logger; + +/** + * @version $Revision: 1.59 $ $Date: 2004/08/10 07:56:08 $ + * @author $Author: abranson $ + */ + +abstract public class Aggregation extends Parent2ChildCollection +{ + + protected GraphModel mLayout = new GraphModel(new AggregationVertexOutlineCreator()); + + private final TypeNameAndConstructionInfo[] mVertexTypeNameAndConstructionInfo = { + new TypeNameAndConstructionInfo(Language.translate("Slot"), "AggregationMember") + }; + + public Aggregation() + { + setName("Aggregation"); + } + + + public GraphModel getLayout() + { + return mLayout; + } + + public void setLayout(GraphModel layout) + { + mLayout = layout; + } + + public TypeNameAndConstructionInfo[] getVertexTypeNameAndConstructionInfo() + { + return mVertexTypeNameAndConstructionInfo; + } + + public boolean exists(int entityKey) + { + for (int i=0; i +{ + + public AggregationDescription() + { + setName("AggregationDescription"); + } + + public AggregationDescription(String name) + { + setName(name); + } + + + @Override + public Aggregation newInstance() + { + AggregationInstance newInstance = new AggregationInstance(getName()); + newInstance.setURLInfo(getURLInfo()); + //for each desc member + for (int i=0; i -1) { + if (mClassProps == null || getProperties() == null) + throw new MembershipException("ClassProps not yet set. Cannot check membership validity."); + + //for each mandatory prop check if its in the member property and has the matching value + StringTokenizer sub = new StringTokenizer(mClassProps, ","); + while (sub.hasMoreTokens()) + { + String aClassProp = sub.nextToken(); + try { + String memberValue = (String)getProperties().get(aClassProp); + Property entityProperty = (Property)Gateway.getStorage().get(entityKey, ClusterStorage.PROPERTY+"/"+aClassProp, null); + if (entityProperty == null) + throw new MembershipException("Property "+aClassProp+ " does not exist for entityKey=" + entityKey ); + if (entityProperty.getValue() == null || !entityProperty.getValue().equalsIgnoreCase(memberValue)) + throw new MembershipException("Value of mandatory prop "+aClassProp+" does not match: " + entityProperty.getValue()+"!="+memberValue); + } + catch (MembershipException ex) { + throw ex; + } + catch (Exception ex) + { + Logger.error(ex); + throw new MembershipException("Error checking properties"); + } + } + } + + mEntityKey = entityKey; + mEntity = null; + entityName = null; + } + + @Override + public void clearEntity() { + mEntityKey = -1; + mEntity = null; + } + + @Override + public EntityProxy resolveEntity() throws ObjectNotFoundException { + if (mEntity == null) { + try { + EntityPath path = new EntityPath(mEntityKey); + mEntity = Gateway.getProxyManager().getProxy(path); + } catch (InvalidEntityPathException ex) { + throw new ObjectNotFoundException("No member defined", ""); + } + } + return mEntity; + + } + + public Image getImage() { + if (image == null) { + image = Resource.findImage("typeicons/"+getProperties().get("Type")+"_16.png").getImage(); + } + return image; + } + + public String getEntityName() { + if (entityName == null) { + if (mEntityKey > -1) { + try { + entityName = resolveEntity().getName(); + } catch (ObjectNotFoundException ex) { + Logger.error(ex); + entityName = "Error ("+mEntityKey+")"; + } + } + else + entityName = "Empty"; + } + + return entityName; + } + +} diff --git a/src/main/java/com/c2kernel/collection/Collection.java b/src/main/java/com/c2kernel/collection/Collection.java new file mode 100644 index 0000000..b507593 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/Collection.java @@ -0,0 +1,32 @@ +package com.c2kernel.collection; +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.entity.C2KLocalObject; +import com.c2kernel.utils.CastorHashMap; + +/** + * @version $Revision: 1.13 $ $Date: 2004/05/14 15:39:39 $ + * @author $Author: abranson $ + */ +public interface Collection extends C2KLocalObject +{ + public static final short EMPTY = -1; + + public int getCounter(); + + public void setCounter(int count); + + public int size(); + + public void setMembers(CollectionMemberList newMembers); + + public CollectionMemberList getMembers(); + + public E addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException; + + public E addMember(int entityKey) throws MembershipException; + + public void removeMember(int memberId) throws MembershipException; + + public E getMember(int memberId) throws ObjectNotFoundException; + +} diff --git a/src/main/java/com/c2kernel/collection/CollectionDescription.java b/src/main/java/com/c2kernel/collection/CollectionDescription.java new file mode 100644 index 0000000..69b569e --- /dev/null +++ b/src/main/java/com/c2kernel/collection/CollectionDescription.java @@ -0,0 +1,14 @@ +package com.c2kernel.collection; + +/************************************************************************** + * + * $Revision: 1.1 $ + * $Date: 2003/03/11 11:09:07 $ + * + * Copyright (C) 2003 CERN - European Organization for Nuclear Research + * All rights reserved. + **************************************************************************/ + +public interface CollectionDescription extends Collection { + public Collection newInstance(); +} diff --git a/src/main/java/com/c2kernel/collection/CollectionMember.java b/src/main/java/com/c2kernel/collection/CollectionMember.java new file mode 100644 index 0000000..0b21e30 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/CollectionMember.java @@ -0,0 +1,38 @@ +package com.c2kernel.collection; + +import java.io.Serializable; + +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.entity.proxy.EntityProxy; +import com.c2kernel.utils.CastorHashMap; + +/************************************************************************** + * CollectionMember interface is the superclass of all members + * This should be temporary - if we manage to rip GraphableVertex from Vertex, + * then that should be the superclass. + * + * $Revision: 1.19 $ + * $Date: 2004/01/22 11:24:44 $ + * + * Copyright (C) 2003 CERN - European Organization for Nuclear Research + * All rights reserved. + **************************************************************************/ + +public interface CollectionMember extends Serializable { + + public void setEntityKey(int entityKey) throws MembershipException; + public int getEntityKey(); + + public void assignEntity(int entityKey) throws MembershipException; + public void clearEntity(); + public EntityProxy resolveEntity() throws ObjectNotFoundException; + + public void setID(int Id); + public int getID(); + + public void setProperties(CastorHashMap props); + public CastorHashMap getProperties(); + + public void setClassProps(String classProps); + public String getClassProps(); +} diff --git a/src/main/java/com/c2kernel/collection/CollectionMemberList.java b/src/main/java/com/c2kernel/collection/CollectionMemberList.java new file mode 100644 index 0000000..0a4bb25 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/CollectionMemberList.java @@ -0,0 +1,22 @@ +/************************************************************************** + * + * $Revision: 1.1 $ + * $Date: 2003/05/15 13:10:09 $ + * + * Copyright (C) 2001 CERN - European Organization for Nuclear Research + * All rights reserved. + **************************************************************************/ + +package com.c2kernel.collection; + +import com.c2kernel.utils.CastorArrayList; + +public class CollectionMemberList extends CastorArrayList +{ + + public CollectionMemberList() + { + super(); + } + +} diff --git a/src/main/java/com/c2kernel/collection/Dependency.java b/src/main/java/com/c2kernel/collection/Dependency.java new file mode 100644 index 0000000..cbbf28c --- /dev/null +++ b/src/main/java/com/c2kernel/collection/Dependency.java @@ -0,0 +1,117 @@ +package com.c2kernel.collection; + + +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.KeyValuePair; +import com.c2kernel.utils.Logger; + +/* +Dependency Object +Objectified link representing dependency between items. +e.g.: Used for ProductDesc::Item-dependency-dependencymember-WfDesc::Item +*/ + +/** + * @version $Revision: 1.15 $ $Date: 2005/04/07 08:03:21 $ + * @author $Author: abranson $ + */ +public class Dependency extends Parent2ChildCollection +{ + + protected CastorHashMap mProperties = new CastorHashMap(); + protected String mClassProps = ""; + + public Dependency() + { + setName("Dependency"); + } + + public Dependency(String name) + { + setName(name); + } + + public CastorHashMap getProperties() { + return mProperties; + } + + public void setProperties(CastorHashMap props) { + mProperties = props; + } + + public KeyValuePair[] getKeyValuePairs() + { + return mProperties.getKeyValuePairs(); + } + public void setKeyValuePairs(KeyValuePair[] pairs) + { + mProperties.setKeyValuePairs(pairs); + } + + public void setClassProps(String classProps) { + this.mClassProps = classProps; + } + + public String getClassProps() { + return mClassProps; + } + + @Override + public DependencyMember addMember(int entityKey) throws MembershipException { + // create member object + DependencyMember depMember = new DependencyMember(); + depMember.setID(getCounter()); + depMember.setProperties(mProperties); + depMember.setClassProps(mClassProps); + + // assign entity + depMember.assignEntity(entityKey); + mMembers.list.add(depMember); + Logger.msg(8, "Dependency::addMember(" + entityKey + ") added to children."); + return depMember; + } + + @Override + public DependencyMember addMember(int entityKey, CastorHashMap props, String classProps) + throws MembershipException + { + if (classProps != null && !classProps.equals(mClassProps)) + throw new MembershipException("Cannot change classProps in dependency member"); + DependencyMember depMember = new DependencyMember(); + depMember.setID(getCounter()); + + // merge props + CastorHashMap newProps = new CastorHashMap(); + for (Object name : props.keySet()) { + String key = (String)name; + newProps.put(key, props.get(key)); + + } + // class props override local + for (Object name : mProperties.keySet()) { + String key = (String)name; + newProps.put(key, mProperties.get(key)); + + } + depMember.setProperties(newProps); + depMember.setClassProps(mClassProps); + + // assign entity + depMember.assignEntity(entityKey); + mMembers.list.add(depMember); + Logger.msg(8, "Dependency::addMember(" + entityKey + ") added to children."); + return depMember; + } + + @Override + public void removeMember(int memberId) throws MembershipException { + for (DependencyMember element : mMembers.list) { + if (element.getID() == memberId) { + mMembers.list.remove(element); + return; + } + } + throw new MembershipException("Member "+memberId+" not found"); + } + +} diff --git a/src/main/java/com/c2kernel/collection/DependencyDescription.java b/src/main/java/com/c2kernel/collection/DependencyDescription.java new file mode 100644 index 0000000..547a286 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/DependencyDescription.java @@ -0,0 +1,53 @@ +package com.c2kernel.collection; + +import com.c2kernel.property.PropertyDescriptionList; +import com.c2kernel.property.PropertyUtility; +import com.c2kernel.utils.CastorHashMap; + +public class DependencyDescription extends Dependency implements CollectionDescription{ + + public DependencyDescription() + { + setName("DependencyDescription"); + } + + public DependencyDescription(String name) + { + setName(name); + } + + @Override + public Collection newInstance() { + String depName = getName().replaceFirst("\'$", ""); // HACK: Knock the special 'prime' off the end for the case of descriptions of descriptions + Dependency newDep = new Dependency(depName); + if (mMembers.list.size() == 1) { // constrain the members based on the property description + DependencyMember mem = mMembers.list.get(0); + PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(mem.getEntityKey()); + if (pdList!=null) { + newDep.setProperties(PropertyUtility.createProperty(pdList)); + newDep.setClassProps(pdList.getClassProps()); + } + } + return newDep; + } + + + @Override + public DependencyMember addMember(int entityKey) throws MembershipException { + checkMembership(); + return super.addMember(entityKey); + } + + @Override + public DependencyMember addMember(int entityKey, CastorHashMap props, String classProps) + throws MembershipException { + checkMembership(); + return super.addMember(entityKey, props, classProps); + } + + public void checkMembership() throws MembershipException { + if (mMembers.list.size() > 0) + throw new MembershipException("Dependency descriptions may not have more than one member."); + } + +} diff --git a/src/main/java/com/c2kernel/collection/DependencyMember.java b/src/main/java/com/c2kernel/collection/DependencyMember.java new file mode 100644 index 0000000..4ca2090 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/DependencyMember.java @@ -0,0 +1,152 @@ +package com.c2kernel.collection; + +import java.util.StringTokenizer; + +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.entity.proxy.EntityProxy; +import com.c2kernel.lookup.EntityPath; +import com.c2kernel.lookup.InvalidEntityPathException; +import com.c2kernel.persistency.ClusterStorage; +import com.c2kernel.process.Gateway; +import com.c2kernel.property.Property; +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.KeyValuePair; +import com.c2kernel.utils.Logger; + + +/** +* @version $Revision: 1.10 $ $Date: 2004/10/21 08:02:23 $ +* @author $Author: abranson $ +*/ + + +public class DependencyMember implements CollectionMember +{ + + private int mEntityKey = -1; + private EntityProxy mEntity = null; + private int mId = -1; + private CastorHashMap mProperties = null; + private String mClassProps; + + + /************************************************************************** + * + **************************************************************************/ + public DependencyMember() + { + mEntityKey = -1; + mProperties = new CastorHashMap(); + } + + + @Override + public void setEntityKey(int entityKey) + { + mEntityKey = entityKey; + mEntity = null; + } + + @Override + public int getEntityKey() + { + return mEntityKey; + } + + @Override + public void setProperties(CastorHashMap props) + { + mProperties = props; + } + + @Override + public CastorHashMap getProperties() + { + return mProperties; + } + + public KeyValuePair[] getKeyValuePairs() + { + return mProperties.getKeyValuePairs(); + } + public void setKeyValuePairs(KeyValuePair[] pairs) + { + mProperties.setKeyValuePairs(pairs); + } + + @Override + public int getID() { + return mId; + } + + @Override + public void setID(int id) { + mId = id; + } + + @Override + public void setClassProps(String props) + { + mClassProps = props; + } + + @Override + public String getClassProps() + { + return mClassProps; + } + + @Override + public void assignEntity(int entityKey) throws MembershipException + { + if (entityKey > -1) { + if (mClassProps == null || getProperties() == null) + throw new MembershipException("ClassProps not yet set. Cannot check membership validity."); + + //for each mandatory prop check if its in the member property and has the matching value + StringTokenizer sub = new StringTokenizer(mClassProps, ","); + while (sub.hasMoreTokens()) + { + String aClassProp = sub.nextToken(); + try { + String memberValue = (String)getProperties().get(aClassProp); + Property entityProperty = (Property)Gateway.getStorage().get(entityKey, ClusterStorage.PROPERTY+"/"+aClassProp, null); + if (entityProperty == null) + throw new MembershipException("Property "+aClassProp+ " does not exist for entityKey=" + entityKey ); + if (!entityProperty.getValue().equalsIgnoreCase(memberValue)) + throw new MembershipException("DependencyMember::checkProperty() Values of mandatory prop "+aClassProp+" do not match " + entityProperty.getValue()+"!="+memberValue); + } + catch (Exception ex) + { + Logger.error(ex); + throw new MembershipException("Error checking properties"); + } + } + } + + mEntityKey = entityKey; + mEntity = null; + } + + @Override + public void clearEntity() { + mEntityKey = -1; + mEntity = null; + } + + @Override + public EntityProxy resolveEntity() throws ObjectNotFoundException { + if (mEntity == null) { + try { + EntityPath path = new EntityPath(mEntityKey); + mEntity = Gateway.getProxyManager().getProxy(path); + } catch (InvalidEntityPathException ex) { + throw new ObjectNotFoundException("No member defined", ""); + } + } + return mEntity; + + } + + +} diff --git a/src/main/java/com/c2kernel/collection/MembershipException.java b/src/main/java/com/c2kernel/collection/MembershipException.java new file mode 100644 index 0000000..912d52c --- /dev/null +++ b/src/main/java/com/c2kernel/collection/MembershipException.java @@ -0,0 +1,21 @@ +package com.c2kernel.collection; + +/************************************************************************** + * + * $Revision: 1.1 $ + * $Date: 2003/05/09 14:23:01 $ + * + * Copyright (C) 2003 CERN - European Organization for Nuclear Research + * All rights reserved. + **************************************************************************/ + +public class MembershipException extends Exception { + + public MembershipException() { + super(); + } + + public MembershipException(String s) { + super(s); + } +} diff --git a/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java b/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java new file mode 100644 index 0000000..c59132e --- /dev/null +++ b/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java @@ -0,0 +1,127 @@ +package com.c2kernel.collection; + +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.persistency.ClusterStorage; +import com.c2kernel.utils.CastorHashMap; + +/** + * @version $Revision: 1.23 $ $Date: 2004/05/14 15:39:39 $ + * @author $Author: abranson $ + */ +abstract public class Parent2ChildCollection implements Collection +{ + + private int mCounter = -1; // Contains next available Member ID + protected CollectionMemberList mMembers = new CollectionMemberList(); + protected int mID = -1; + protected String mName = ""; // Not checked for uniqueness + protected String mURLInfo = ""; + + @Override + public int getCounter() + { + if (mCounter == -1) + for (Object name : mMembers.list) { + CollectionMember element = (CollectionMember)name; + if (mCounter < element.getID()) + mCounter = element.getID(); + } + return ++mCounter; + } + + @Override + public void setCounter(int count) + { + mCounter = count; + } + + + @Override + public int size() + { + return mMembers.list.size(); + } + + public void setID(int id) + { + mID = id; + } + + public int getID() + { + return mID; + } + + @Override + public void setName(String name) + { + mName = name; + } + + public void setURLInfo(String urlInfo) + { + mURLInfo = urlInfo; + } + + @Override + public String getName() + { + return mName; + } + + @Override + public String getClusterType() + { + return ClusterStorage.COLLECTION; + } + + public String getURLInfo() + { + return mURLInfo; + } + + @Override + public void setMembers(CollectionMemberList newMembers) + { + mMembers = newMembers; + } + + public boolean contains(int entityKey) { + for (Object name : mMembers.list) { + CollectionMember element = (CollectionMember)name; + if (element.getEntityKey() == entityKey) + return true; + } + return false; + } + + public boolean isFull() + { + for (int i=0; i getMembers() + { + return mMembers; + } + + @Override + public abstract E addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException; + +} diff --git a/src/main/java/com/c2kernel/collection/RelationshipUtils.java b/src/main/java/com/c2kernel/collection/RelationshipUtils.java new file mode 100644 index 0000000..6e35ac8 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/RelationshipUtils.java @@ -0,0 +1,33 @@ +package com.c2kernel.collection; + + +import com.c2kernel.lookup.EntityPath; +import com.c2kernel.persistency.ClusterStorage; +import com.c2kernel.process.Gateway; + + +/** + * @version $Revision: 1.22 $ $Date: 2004/10/21 08:02:23 $ + * @author $Author: abranson $ + */ + +public class RelationshipUtils +{ + + static public boolean getIsComposite(int entityKey) + { + if (entityKey == -1) return false; + try + { + if ( ((Aggregation) Gateway.getProxyManager().getProxy(new EntityPath(entityKey)).getObject(ClusterStorage.COLLECTION+"/Composition" )).size() > 0 ) + return true; + } + catch (Exception ex) + { + //do nothing - member has no composition, thus elementary + } + + return false; + } + +} diff --git a/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java new file mode 100644 index 0000000..cd4963f --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java @@ -0,0 +1,46 @@ +package com.c2kernel.collection.gui.model; + +import java.awt.Point; + +import com.c2kernel.collection.Aggregation; +import com.c2kernel.collection.MembershipException; +import com.c2kernel.graph.model.GraphModelManager; +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.graph.model.VertexFactory; +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.Logger; + + +public class AggregationVertexFactory implements VertexFactory +{ + private Aggregation mAggregation = null; + + + @Override + public void setCreationContext(Object aggregation) + { + if (aggregation != null && aggregation instanceof Aggregation) + mAggregation = (Aggregation)aggregation; + } + + + @Override + public void create + ( + GraphModelManager graphModelManager, + Point location, + TypeNameAndConstructionInfo typeNameAndConstructionInfo + ) + { + if (typeNameAndConstructionInfo.mInfo.equals("AggregationMember")) { + try { + mAggregation.addMember(-1, new CastorHashMap(), "", new GraphPoint(location.x, location.y), 40, 40); + } catch (MembershipException ex) { + Logger.error(ex); + Logger.exceptionDialog(ex); + } + } + } +} + diff --git a/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexOutlineCreator.java b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexOutlineCreator.java new file mode 100644 index 0000000..b28af2e --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexOutlineCreator.java @@ -0,0 +1,44 @@ +package com.c2kernel.collection.gui.model; + +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.graph.model.VertexOutlineCreator; + + +public class AggregationVertexOutlineCreator implements VertexOutlineCreator +{ + @Override + public void setOutline(Vertex vertex) + { + GraphPoint centre = vertex.getCentrePoint(); + int height = vertex.getHeight(); + int width = vertex.getWidth(); + + + if (height==0 || width==0) + vertex.setOutlinePoints + ( + new GraphPoint[] + { + new GraphPoint(centre.x-20, centre.y-20), + new GraphPoint(centre.x+20, centre.y-20), + new GraphPoint(centre.x+20, centre.y+20), + new GraphPoint(centre.x-20, centre.y+20) + + } + ); + else + + vertex.setOutlinePoints + ( + new GraphPoint[] + { + new GraphPoint(centre.x-width/2, centre.y-height/2), + new GraphPoint(centre.x+width/2, centre.y-height/2), + new GraphPoint(centre.x+width/2, centre.y+height/2), + new GraphPoint(centre.x-width/2, centre.y+height/2) + + } + ); + } +} diff --git a/src/main/java/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java b/src/main/java/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java new file mode 100644 index 0000000..6d41d20 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java @@ -0,0 +1,125 @@ +package com.c2kernel.collection.gui.view; + +import java.awt.FontMetrics; +import java.awt.Graphics2D; + +import com.c2kernel.collection.Aggregation; +import com.c2kernel.collection.AggregationMember; +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.graph.view.VertexRenderer; +import com.c2kernel.utils.Logger; + +/** + * @version $Revision: 1.24 $ $Date: 2005/12/01 14:23:15 $ + * @author $Author: abranson $ + */ + +public class AggregationMemberRenderer implements VertexRenderer +{ + + private Aggregation mAggregation = null; + + public AggregationMemberRenderer() + { + } + + public void setAggregation(Aggregation agg) + { + mAggregation = agg; + } + + + @Override + public void draw(Graphics2D g2d, Vertex vertex) + { + GraphPoint centre = vertex.getCentrePoint(); + GraphPoint[] outline = vertex.getOutlinePoints(); + FontMetrics metrics = g2d.getFontMetrics(); + + AggregationMember memberPair = mAggregation.getMemberPair(vertex.getID()); + + try + { + String name = memberPair.getEntityName(); + + g2d.drawString( name, + centre.x-metrics.stringWidth(name)/2, + topYOfOutline(outline) ); + + g2d.drawImage + ( + memberPair.getImage(), + centre.x - 8, + centre.y - 8, + null + ); + + + + // Draw the outline of the vertex + if(outline.length > 1) + { + for(int i=0; i bottomY) + { + bottomY = outline[i].y; + } + } + + return bottomY; + } +} diff --git a/src/main/java/com/c2kernel/collection/gui/view/CollectionFrame.java b/src/main/java/com/c2kernel/collection/gui/view/CollectionFrame.java new file mode 100644 index 0000000..2d40436 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/view/CollectionFrame.java @@ -0,0 +1,41 @@ +package com.c2kernel.collection.gui.view; + +import java.awt.GridLayout; + +import javax.swing.JFrame; + +import com.c2kernel.collection.Aggregation; +import com.c2kernel.gui.tabs.CollectionPane; + + +/** + * @version $Revision: 1.10 $ $Date: 2003/04/06 15:06:36 $ + * @author $Author: abranson $ + */ + +public class CollectionFrame extends JFrame +{ + + private CollectionPane mCollectionPane = new CollectionPane(); + + public CollectionFrame() + { + createLayout(); + } + + public void setAggregation(Aggregation aggregation) + { + mCollectionPane.add(aggregation); + } + + + private void createLayout() + { + getContentPane().setLayout(new GridLayout(1, 1)); + + getContentPane().add(mCollectionPane); + + setSize(1000, 1000); + setVisible(true); + } +} diff --git a/src/main/java/com/c2kernel/collection/gui/view/PropertyPanel.java b/src/main/java/com/c2kernel/collection/gui/view/PropertyPanel.java new file mode 100644 index 0000000..f566d70 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/view/PropertyPanel.java @@ -0,0 +1,37 @@ +package com.c2kernel.collection.gui.view; + +import com.c2kernel.collection.Aggregation; +import com.c2kernel.collection.AggregationMember; +import com.c2kernel.collection.CollectionMember; +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.graph.view.VertexPropertyPanel; + +public class PropertyPanel extends VertexPropertyPanel { + + Aggregation mCollection; + + public PropertyPanel() { + super(); + } + + public void setCollection(Aggregation collection) { + mCollection = collection; + } + + @Override + public void setVertex(Vertex vert) { + try { + CollectionMember newMember = mCollection.getMember(vert.getID()); + if (newMember instanceof AggregationMember) { + super.setVertex((AggregationMember)newMember); + return; + } + else + clear(); + } catch (ObjectNotFoundException ex) { + clear(); + selObjClass.setText("No Collection Member object found"); + } + } +} diff --git a/src/main/java/com/c2kernel/collection/gui/view/SelectedMemberPanel.java b/src/main/java/com/c2kernel/collection/gui/view/SelectedMemberPanel.java new file mode 100644 index 0000000..5b59b35 --- /dev/null +++ b/src/main/java/com/c2kernel/collection/gui/view/SelectedMemberPanel.java @@ -0,0 +1,164 @@ +package com.c2kernel.collection.gui.view; + +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.JToggleButton; + +import com.c2kernel.collection.AggregationMember; +import com.c2kernel.collection.MembershipException; +import com.c2kernel.entity.proxy.EntityProxy; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.graph.view.SelectedVertexPanel; +import com.c2kernel.gui.DomainKeyConsumer; +import com.c2kernel.gui.MainFrame; +import com.c2kernel.lookup.DomainPath; +import com.c2kernel.lookup.EntityPath; +import com.c2kernel.process.Gateway; +import com.c2kernel.utils.Language; + +/************************************************************************** + * + * $Revision: 1.10 $ + * $Date: 2005/05/12 10:12:52 $ + * + * Copyright (C) 2003 CERN - European Organization for Nuclear Research + * All rights reserved. + **************************************************************************/ + + +public class SelectedMemberPanel extends SelectedVertexPanel implements DomainKeyConsumer { + + JLabel slotNumber = new JLabel(); + JTextField memberKey = new JTextField(14); + + JButton findButton = new JButton(Language.translate("Find")); + JToggleButton changeButton = new JToggleButton(Language.translate("Change")); + JButton removeButton = new JButton(Language.translate("Remove")); + + SelectedMemberPanel me; + AggregationMember selectedMember = null; + + public SelectedMemberPanel() { + me=this; + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + JPanel attrs = new JPanel(new GridLayout(3,2)); + attrs.add(new JLabel(Language.translate("Slot Number:"))); + attrs.add(slotNumber); + attrs.add(new JLabel(Language.translate("Assigned Member:"))); + attrs.add(memberKey); + memberKey.setEditable(false); + + add(attrs); + add(Box.createVerticalStrut(10)); + + findButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + String code = memberKey.getText(); + if (code == null || code.length() == 0) + code = memberKey.getText().replace('/',' '); + MainFrame.itemFinder.pushNewKey(code); + } + }); + + changeButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + if (changeButton.getModel().isSelected()) { + MainFrame.status.setText(Language.translate("Please scan or type your barcode to assign in the top field")); + MainFrame.itemFinder.setConsumer(me, "Assign"); + findButton.setEnabled(false); + } + else { + MainFrame.status.setText(""); + MainFrame.itemFinder.clearConsumer(me); + if (selectedMember.getEntityKey() > -1) findButton.setEnabled(true); + } + } + }); + + removeButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + selectedMember.clearEntity(); + selectedMember.getProperties().remove("Name"); + select(selectedMember); + } + }); + + Box buttonBox = Box.createHorizontalBox(); + buttonBox.add(findButton); + if (MainFrame.isAdmin) { + buttonBox.add(changeButton); + buttonBox.add(removeButton); + } + + setButtons(false); + add(buttonBox); + } + + @Override + public void select(Vertex vert) { + selectedMember = (AggregationMember)vert; + slotNumber.setText(String.valueOf(vert.getID())); + int memberId = selectedMember.getEntityKey(); + String name = "Empty"; + try { + EntityProxy member = Gateway.getProxyManager().getProxy(new EntityPath(memberId)); + name = member.getName(); + } catch (Exception e) { } + memberKey.setText(name); + setButtons(true); + + revalidate(); + } + + @Override + public void clear() { + slotNumber.setText(""); + memberKey.setText(""); + setButtons(false); + revalidate(); + } + + public void setButtons(boolean state) { + findButton.setEnabled(state); + changeButton.getModel().setSelected(false); + changeButton.setEnabled(state); + removeButton.setEnabled(state); + MainFrame.itemFinder.clearConsumer(me); + } + /** + * + */ + @Override + public void push(DomainPath key) { + MainFrame.status.setText("Assigning entity "+key.getSysKey()+" to slot "+selectedMember.getID()); + try { + selectedMember.assignEntity(key.getSysKey()); + select(selectedMember); + } catch (MembershipException ex) { + JOptionPane.showMessageDialog(null, "Product does not fit in this slot", "Error", JOptionPane.ERROR_MESSAGE); + } + } + + /** + * + */ + @Override + public void push(String name) { + JOptionPane.showMessageDialog(null, "Product is not known in this centre", "Error", JOptionPane.ERROR_MESSAGE); + } + +} + -- cgit v1.2.3