]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.history/src/org/simantics/history/ItemManager.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.history / src / org / simantics / history / ItemManager.java
index 583d6d9380e886f032971222ca9d632b22a6bb3a..8a94553acedecf2f9e231e70f65fc08553e8482e 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
- * Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.history;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-import java.util.TreeMap;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.databoard.binding.error.BindingConstructionException;\r
-import org.simantics.databoard.binding.error.BindingException;\r
-import org.simantics.databoard.type.Datatype;\r
-import org.simantics.databoard.util.Bean;\r
-\r
-/**\r
- * This utility class helps in adding, removing and searching of history items.\r
- * The input and result if convertible with Item[] configuration.\r
- *  \r
- * @author toni.kalajainen\r
- */\r
-public class ItemManager {\r
-       \r
-       Map<String, Bean> items = new TreeMap<String, Bean>();\r
-\r
-       public static <Item extends Bean> ItemManager createUnchecked( @SuppressWarnings("unchecked") Item...items ) {\r
-               try {\r
-                       return new ItemManager(items);\r
-               } catch (HistoryException e) {\r
-                       throw new RuntimeException(e);\r
-               }\r
-       }\r
-\r
-       public <Item extends Bean> ItemManager( @SuppressWarnings("unchecked") Item...items ) throws HistoryException\r
-       {\r
-               try {\r
-                       for (Item item : items) {\r
-                               String id = (String) item.getField("id");\r
-                               this.items.put( id, item );\r
-                       }\r
-               } catch (BindingException e) {\r
-                       throw new HistoryException( e );\r
-               }\r
-       }\r
-       \r
-       public <Item extends Bean> ItemManager( List<Item> items ) throws HistoryException\r
-       {\r
-               try {\r
-                       for (Item item : items) {\r
-                               String id = (String) item.getField("id");\r
-                               this.items.put( id, item );\r
-                       }\r
-               } catch (BindingException e) {\r
-                       throw new HistoryException( e );\r
-               }\r
-       }\r
-       \r
-       public boolean exists(String id)\r
-       {\r
-               return items.containsKey(id);\r
-       }\r
-       \r
-       public Bean get(String id) \r
-       {\r
-               return items.get( id );\r
-       }\r
-       \r
-       public Set<String> ids()\r
-       {\r
-               return items.keySet();\r
-       }\r
-\r
-       public Collection<Bean> values()\r
-       {\r
-               return items.values();\r
-       }\r
-       \r
-       public Bean[] toArray() \r
-       {\r
-               return items.values().toArray( new Bean[ items.size() ] );\r
-       }\r
-       \r
-       public String[] toIdArray()\r
-       {\r
-               return items.keySet().toArray( new String[ items.size() ] );\r
-       }\r
-       \r
-       public void add(Bean item) throws BindingException \r
-       {\r
-               items.put( (String) item.getIdentifier(), item.clone()); \r
-       }\r
-       \r
-       public Bean remove(String id)\r
-       {\r
-               return items.remove(id);\r
-       }\r
-       \r
-       public void remove(Bean...items)\r
-       {\r
-               for (Bean item : items)\r
-               {\r
-                       try {\r
-                               this.items.remove( (String) item.getIdentifier() );\r
-                       } catch (BindingException e) {\r
-                       }\r
-               }\r
-       }\r
-       \r
-       public List<Bean> search(String fieldName1, Object expected1) throws BindingException\r
-       {\r
-               try {\r
-                       Binding binding1 = getBinding(expected1);\r
-                       List<Bean> result = new ArrayList<Bean>();\r
-                       for (Bean item : items.values()) {\r
-                               Binding cb1 = item.getFieldBinding(fieldName1);\r
-                               Object cv1 = item.getField(fieldName1);\r
-                               \r
-                               boolean matches1 = \r
-                                               (expected1==null && cv1==null) || \r
-                                               (cv1!=null && cb1!=null && binding1!=null && expected1!=null &&\r
-                                                Bindings.equals(cb1, cv1, binding1, expected1));\r
-                               \r
-                               if ( matches1 ) result.add(item);                               \r
-                       }\r
-                       return result;\r
-               } catch (BindingConstructionException bce) {\r
-                       throw new BindingException(bce);\r
-               }\r
-       }\r
-\r
-       public List<Bean> search(String fieldName1, Object expected1, String fieldName2, Object expected2) throws BindingException\r
-       {\r
-               try {\r
-                       List<Bean> result = new ArrayList<Bean>();\r
-                       Binding binding1 = getBinding(expected1);\r
-                       Binding binding2 = getBinding(expected2);\r
-                       for (Bean item : items.values()) {\r
-                               Binding cb1 = item.getFieldBinding(fieldName1);\r
-                               Object cv1 = item.getField(fieldName1);\r
-                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));\r
-                               \r
-                               Binding cb2 = item.getFieldBinding(fieldName2);\r
-                               Object cv2 = item.getField(fieldName2);\r
-                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));\r
-\r
-                               if ( matches1 && matches2 ) result.add(item);                           \r
-                       }\r
-                       return result;\r
-               } catch (BindingConstructionException bce) {\r
-                       throw new BindingException(bce);\r
-               }\r
-       }\r
-\r
-       public List<Bean> search(\r
-                       String fieldName1, Object expected1,\r
-                       String fieldName2, Object expected2,\r
-                       String fieldName3, Object expected3)\r
-                                       throws BindingException\r
-       {\r
-               try {\r
-                       List<Bean> result = new ArrayList<Bean>();\r
-                       Binding binding1 = getBinding(expected1);\r
-                       Binding binding2 = getBinding(expected2);\r
-                       Binding binding3 = getBinding(expected3);\r
-                       for (Bean item : items.values()) {\r
-                               Binding cb1 = item.getFieldBinding(fieldName1);\r
-                               Object cv1 = item.getField(fieldName1);\r
-                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));\r
-                               \r
-                               Binding cb2 = item.getFieldBinding(fieldName2);\r
-                               Object cv2 = item.getField(fieldName2);\r
-                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));\r
-\r
-                               Binding cb3 = item.getFieldBinding(fieldName3);\r
-                               Object cv3 = item.getField(fieldName3);\r
-                               boolean matches3 = (expected3==null && cv3==null) || (Bindings.equals(cb3, cv3, binding3, expected3));\r
-\r
-                               if ( matches1 && matches2 && matches3 ) result.add(item);\r
-                       }\r
-                       return result;\r
-               } catch (BindingConstructionException bce) {\r
-                       throw new BindingException(bce);\r
-               }\r
-       }\r
-       \r
-       Binding getBinding(Object data) throws BindingConstructionException {\r
-               if ( data==null ) return null;\r
-               Class<?> clazz = data.getClass();\r
-               if ( Datatype.class.isAssignableFrom(clazz) ) return Bindings.getBinding( Datatype.class );\r
-               return Bindings.getBinding(clazz);\r
-       }\r
-\r
-       public List<Bean> search(\r
-                       String fieldName1, Object expected1, \r
-                       String fieldName2, Object expected2, \r
-                       String fieldName3, Object expected3, \r
-                       String fieldName4, Object expected4, \r
-                       String fieldName5, Object expected5, \r
-                       String fieldName6, Object expected6, \r
-                       String fieldName7, Object expected7\r
-                       ) throws BindingException\r
-       {\r
-               try {\r
-                       List<Bean> result = new ArrayList<Bean>();\r
-                       Binding binding1 = getBinding(expected1);\r
-                       Binding binding2 = getBinding(expected2);\r
-                       Binding binding3 = getBinding(expected3);\r
-                       Binding binding4 = getBinding(expected4);\r
-                       Binding binding5 = getBinding(expected5);\r
-                       Binding binding6 = getBinding(expected6);\r
-                       Binding binding7 = getBinding(expected7);\r
-                       for (Bean item : items.values()) {\r
-                               Binding cb1 = item.getFieldBinding(fieldName1);\r
-                               Object cv1 = item.getField(fieldName1);\r
-                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));\r
-                               \r
-                               Binding cb2 = item.getFieldBinding(fieldName2);\r
-                               Object cv2 = item.getField(fieldName2);\r
-                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));\r
-\r
-                               Binding cb3 = item.getFieldBinding(fieldName3);\r
-                               Object cv3 = item.getField(fieldName3);\r
-                               boolean matches3 = (expected3==null && cv3==null) || (Bindings.equals(cb3, cv3, binding3, expected3));\r
-\r
-                               Binding cb4 = item.getFieldBinding(fieldName4);\r
-                               Object cv4 = item.getField(fieldName4);\r
-                               boolean matches4 = (expected4==null && cv4==null) || (Bindings.equals(cb4, cv4, binding4, expected4));\r
-\r
-                               Binding cb5 = item.getFieldBinding(fieldName5);\r
-                               Object cv5 = item.getField(fieldName5);\r
-                               boolean matches5 = (expected5==null && cv5==null) || (Bindings.equals(cb5, cv5, binding5, expected5));\r
-\r
-                               Binding cb6 = item.getFieldBinding(fieldName6);\r
-                               Object cv6 = item.getField(fieldName6);\r
-                               boolean matches6 = (expected6==null && cv6==null) || (Bindings.equals(cb6, cv6, binding6, expected6));\r
-\r
-                               Binding cb7 = item.getFieldBinding(fieldName7);\r
-                               Object cv7 = item.getField(fieldName7);\r
-                               boolean matches7 = (expected7==null && cv7==null) || (Bindings.equals(cb7, cv7, binding7, expected7));\r
-                               \r
-//                             if (expected2.equals("/RL10F001/XB_02#BINARY_VALUE") && cv2.equals("/RL10F001/XB_02#BINARY_VALUE"));\r
-//                                     System.out.println("debug here");\r
-\r
-                               if ( matches1 && matches2 & matches3 & matches4 & matches5 & matches6 & matches7 ) result.add(item);                            \r
-                       }\r
-                       /*\r
-                       if (result.isEmpty()) {\r
-                               System.out.println("No match for "+expected2);\r
-                       } else {\r
-                               if (result.size()>1) System.out.println("many matches for "+expected2); else\r
-                               System.out.println("match for "+expected2+" is "+result.iterator().next().getField(fieldName2));\r
-                       }*/\r
-                       return result;\r
-               } catch (BindingConstructionException bce) {\r
-                       throw new BindingException(bce);\r
-               }\r
-       }\r
-       \r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.history;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingConstructionException;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.type.Datatype;
+import org.simantics.databoard.util.Bean;
+
+/**
+ * This utility class helps in adding, removing and searching of history items.
+ * The input and result if convertible with Item[] configuration.
+ *  
+ * @author toni.kalajainen
+ */
+public class ItemManager {
+       
+       Map<String, Bean> items = new TreeMap<String, Bean>();
+
+       public static <Item extends Bean> ItemManager createUnchecked( @SuppressWarnings("unchecked") Item...items ) {
+               try {
+                       return new ItemManager(items);
+               } catch (HistoryException e) {
+                       throw new RuntimeException(e);
+               }
+       }
+
+       public <Item extends Bean> ItemManager( @SuppressWarnings("unchecked") Item...items ) throws HistoryException
+       {
+               try {
+                       for (Item item : items) {
+                               String id = (String) item.getField("id");
+                               this.items.put( id, item );
+                       }
+               } catch (BindingException e) {
+                       throw new HistoryException( e );
+               }
+       }
+       
+       public <Item extends Bean> ItemManager( List<Item> items ) throws HistoryException
+       {
+               try {
+                       for (Item item : items) {
+                               String id = (String) item.getField("id");
+                               this.items.put( id, item );
+                       }
+               } catch (BindingException e) {
+                       throw new HistoryException( e );
+               }
+       }
+       
+       public boolean exists(String id)
+       {
+               return items.containsKey(id);
+       }
+       
+       public Bean get(String id) 
+       {
+               return items.get( id );
+       }
+       
+       public Set<String> ids()
+       {
+               return items.keySet();
+       }
+
+       public Collection<Bean> values()
+       {
+               return items.values();
+       }
+       
+       public Bean[] toArray() 
+       {
+               return items.values().toArray( new Bean[ items.size() ] );
+       }
+       
+       public String[] toIdArray()
+       {
+               return items.keySet().toArray( new String[ items.size() ] );
+       }
+       
+       public void add(Bean item) throws BindingException 
+       {
+               items.put( (String) item.getIdentifier(), item.clone()); 
+       }
+       
+       public Bean remove(String id)
+       {
+               return items.remove(id);
+       }
+       
+       public void remove(Bean...items)
+       {
+               for (Bean item : items)
+               {
+                       try {
+                               this.items.remove( (String) item.getIdentifier() );
+                       } catch (BindingException e) {
+                       }
+               }
+       }
+       
+       public List<Bean> search(String fieldName1, Object expected1) throws BindingException
+       {
+               try {
+                       Binding binding1 = getBinding(expected1);
+                       List<Bean> result = new ArrayList<Bean>();
+                       for (Bean item : items.values()) {
+                               Binding cb1 = item.getFieldBinding(fieldName1);
+                               Object cv1 = item.getField(fieldName1);
+                               
+                               boolean matches1 = 
+                                               (expected1==null && cv1==null) || 
+                                               (cv1!=null && cb1!=null && binding1!=null && expected1!=null &&
+                                                Bindings.equals(cb1, cv1, binding1, expected1));
+                               
+                               if ( matches1 ) result.add(item);                               
+                       }
+                       return result;
+               } catch (BindingConstructionException bce) {
+                       throw new BindingException(bce);
+               }
+       }
+
+       public List<Bean> search(String fieldName1, Object expected1, String fieldName2, Object expected2) throws BindingException
+       {
+               try {
+                       List<Bean> result = new ArrayList<Bean>();
+                       Binding binding1 = getBinding(expected1);
+                       Binding binding2 = getBinding(expected2);
+                       for (Bean item : items.values()) {
+                               Binding cb1 = item.getFieldBinding(fieldName1);
+                               Object cv1 = item.getField(fieldName1);
+                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));
+                               
+                               Binding cb2 = item.getFieldBinding(fieldName2);
+                               Object cv2 = item.getField(fieldName2);
+                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));
+
+                               if ( matches1 && matches2 ) result.add(item);                           
+                       }
+                       return result;
+               } catch (BindingConstructionException bce) {
+                       throw new BindingException(bce);
+               }
+       }
+
+       public List<Bean> search(
+                       String fieldName1, Object expected1,
+                       String fieldName2, Object expected2,
+                       String fieldName3, Object expected3)
+                                       throws BindingException
+       {
+               try {
+                       List<Bean> result = new ArrayList<Bean>();
+                       Binding binding1 = getBinding(expected1);
+                       Binding binding2 = getBinding(expected2);
+                       Binding binding3 = getBinding(expected3);
+                       for (Bean item : items.values()) {
+                               Binding cb1 = item.getFieldBinding(fieldName1);
+                               Object cv1 = item.getField(fieldName1);
+                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));
+                               
+                               Binding cb2 = item.getFieldBinding(fieldName2);
+                               Object cv2 = item.getField(fieldName2);
+                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));
+
+                               Binding cb3 = item.getFieldBinding(fieldName3);
+                               Object cv3 = item.getField(fieldName3);
+                               boolean matches3 = (expected3==null && cv3==null) || (Bindings.equals(cb3, cv3, binding3, expected3));
+
+                               if ( matches1 && matches2 && matches3 ) result.add(item);
+                       }
+                       return result;
+               } catch (BindingConstructionException bce) {
+                       throw new BindingException(bce);
+               }
+       }
+       
+       Binding getBinding(Object data) throws BindingConstructionException {
+               if ( data==null ) return null;
+               Class<?> clazz = data.getClass();
+               if ( Datatype.class.isAssignableFrom(clazz) ) return Bindings.getBinding( Datatype.class );
+               return Bindings.getBinding(clazz);
+       }
+
+       public List<Bean> search(
+                       String fieldName1, Object expected1, 
+                       String fieldName2, Object expected2, 
+                       String fieldName3, Object expected3, 
+                       String fieldName4, Object expected4, 
+                       String fieldName5, Object expected5, 
+                       String fieldName6, Object expected6, 
+                       String fieldName7, Object expected7
+                       ) throws BindingException
+       {
+               try {
+                       List<Bean> result = new ArrayList<Bean>();
+                       Binding binding1 = getBinding(expected1);
+                       Binding binding2 = getBinding(expected2);
+                       Binding binding3 = getBinding(expected3);
+                       Binding binding4 = getBinding(expected4);
+                       Binding binding5 = getBinding(expected5);
+                       Binding binding6 = getBinding(expected6);
+                       Binding binding7 = getBinding(expected7);
+                       for (Bean item : items.values()) {
+                               Binding cb1 = item.getFieldBinding(fieldName1);
+                               Object cv1 = item.getField(fieldName1);
+                               boolean matches1 = (expected1==null && cv1==null) || (Bindings.equals(cb1, cv1, binding1, expected1));
+                               
+                               Binding cb2 = item.getFieldBinding(fieldName2);
+                               Object cv2 = item.getField(fieldName2);
+                               boolean matches2 = (expected2==null && cv2==null) || (Bindings.equals(cb2, cv2, binding2, expected2));
+
+                               Binding cb3 = item.getFieldBinding(fieldName3);
+                               Object cv3 = item.getField(fieldName3);
+                               boolean matches3 = (expected3==null && cv3==null) || (Bindings.equals(cb3, cv3, binding3, expected3));
+
+                               Binding cb4 = item.getFieldBinding(fieldName4);
+                               Object cv4 = item.getField(fieldName4);
+                               boolean matches4 = (expected4==null && cv4==null) || (Bindings.equals(cb4, cv4, binding4, expected4));
+
+                               Binding cb5 = item.getFieldBinding(fieldName5);
+                               Object cv5 = item.getField(fieldName5);
+                               boolean matches5 = (expected5==null && cv5==null) || (Bindings.equals(cb5, cv5, binding5, expected5));
+
+                               Binding cb6 = item.getFieldBinding(fieldName6);
+                               Object cv6 = item.getField(fieldName6);
+                               boolean matches6 = (expected6==null && cv6==null) || (Bindings.equals(cb6, cv6, binding6, expected6));
+
+                               Binding cb7 = item.getFieldBinding(fieldName7);
+                               Object cv7 = item.getField(fieldName7);
+                               boolean matches7 = (expected7==null && cv7==null) || (Bindings.equals(cb7, cv7, binding7, expected7));
+                               
+//                             if (expected2.equals("/RL10F001/XB_02#BINARY_VALUE") && cv2.equals("/RL10F001/XB_02#BINARY_VALUE"));
+//                                     System.out.println("debug here");
+
+                               if ( matches1 && matches2 & matches3 & matches4 & matches5 & matches6 & matches7 ) result.add(item);                            
+                       }
+                       /*
+                       if (result.isEmpty()) {
+                               System.out.println("No match for "+expected2);
+                       } else {
+                               if (result.size()>1) System.out.println("many matches for "+expected2); else
+                               System.out.println("match for "+expected2+" is "+result.iterator().next().getField(fieldName2));
+                       }*/
+                       return result;
+               } catch (BindingConstructionException bce) {
+                       throw new BindingException(bce);
+               }
+       }
+       
+
+}