major changes in imports and exports
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / MapWrapper.java
index 4d0b54dc2d8f8fe99fe8d97f092e2420f48e4c2f..884e5f3526c28815adf328ac733afe9e5aeb562a 100644 (file)
@@ -27,12 +27,7 @@ public class MapWrapper<T extends CdmBase> {
        private IService<CdmBase> service = null; \r
        \r
        public MapWrapper(IService<CdmBase> service){\r
-               if (service == null){\r
-                       internalMap = new HashMap<Integer, CdmBase>();\r
-               }else{\r
-                       this.service = service;\r
-                       internalMap =  new HashMap<Integer, UUID>();\r
-               }\r
+               makeNewMap(service);\r
        }\r
        \r
        public void put(Object id, T cdmBase){\r
@@ -64,7 +59,7 @@ public class MapWrapper<T extends CdmBase> {
        }\r
        \r
        /**\r
-        * Returns all values that are either stored in the wrapper or the the database.\r
+        * Returns all values that are either stored in the wrapper or the database.\r
         * If <code>service</code> is null then only the elements stored in the wrapper are returned. \r
         * @return\r
         */\r
@@ -81,7 +76,7 @@ public class MapWrapper<T extends CdmBase> {
                return result;\r
        }\r
        \r
-       public boolean containsId(Integer id){\r
+       public boolean containsId(Object id){\r
                return internalMap.containsKey(id);\r
        }\r
        \r
@@ -107,4 +102,59 @@ public class MapWrapper<T extends CdmBase> {
                }\r
        }\r
        \r
+       public boolean makeEmpty(){\r
+               return makeNewMap(service);\r
+       }\r
+       \r
+       public boolean makeNewMap(IService<CdmBase> service){\r
+                       if (service == null){\r
+                               internalMap = new HashMap<Integer, CdmBase>();\r
+                       }else{\r
+                               this.service = service;\r
+                               internalMap =  new HashMap<Integer, UUID>();\r
+                       }\r
+                       return true;\r
+       }\r
+       \r
+       public int size() {\r
+               return internalMap.size();\r
+       }\r
+       \r
+       public Collection<T> objects(int start, int limit) {\r
+               \r
+               Map internalPartMap = new HashMap<Integer, CdmBase>();\r
+               int index = 0;\r
+               \r
+               for (int i = 0; i < limit; i++) {\r
+//             for (int i = start; i < limit; i++) {\r
+                       \r
+                       int j = start + i;\r
+                       \r
+                       Object object = internalMap.get(j);\r
+                       if(object != null) {\r
+                               internalPartMap.put(index, internalMap.get(j));\r
+                               index++;\r
+                       } else {\r
+                               if (logger.isDebugEnabled()) { logger.debug("Object (" + j + ") is null"); }\r
+                       }\r
+               }\r
+//             return (Collection<T>)internalMap.values();\r
+               return (Collection<T>)internalPartMap.values();\r
+       }\r
+       \r
+               \r
+       public Collection<T> removeObjects(int start, int limit) {\r
+               \r
+               for (int i = start; i < start + limit; i++) {\r
+                       internalMap.remove(i);\r
+                       if (logger.isDebugEnabled()) { logger.debug("Object (" + i + ") removed"); }\r
+               }\r
+               return (Collection<T>)internalMap.values();\r
+       }\r
+\r
+       \r
+       public Set<Integer> keySet() {\r
+               return internalMap.keySet();\r
+       }\r
+       \r
 }\r