Changeset 826:51ec6332c94f


Ignore:
Timestamp:
01/29/12 00:10:58 (4 months ago)
Author:
xeraph
Branch:
default
Message:

lightened heavy changelog (removed collection name duplicates)

Location:
kraken-confdb/src/main/java/org/krakenapps/confdb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kraken-confdb/src/main/java/org/krakenapps/confdb/ConfigChange.java

    r421 r826  
    1616package org.krakenapps.confdb; 
    1717 
     18import org.krakenapps.api.FieldOption; 
     19 
    1820/** 
    1921 * changed config entry for changeset log 
     
    2527        private CommitOp operation; 
    2628 
     29        @FieldOption(skip = true) 
    2730        private String colName; 
    2831 
  • kraken-confdb/src/main/java/org/krakenapps/confdb/file/ChangeLog.java

    r504 r826  
    1919import java.util.ArrayList; 
    2020import java.util.Arrays; 
     21import java.util.Collection; 
    2122import java.util.Date; 
    2223import java.util.HashMap; 
     
    110111                m.put("msg", message); 
    111112                m.put("manifest_id", manifestId); 
     113                m.put("col_names", serializeCollectionNames()); 
    112114                m.put("changeset", PrimitiveConverter.serialize(changeset)); 
    113115 
     
    117119        } 
    118120 
     121        private List<Object> serializeCollectionNames() { 
     122                Map<String, Integer> m = new HashMap<String, Integer>(); 
     123                for (ConfigChange c : changeset) 
     124                        m.put(c.getColName(), c.getColId()); 
     125 
     126                List<Object> cols = new ArrayList<Object>(); 
     127                for (String name : m.keySet()) { 
     128                        cols.add(new Object[] { m.get(name), name }); 
     129                } 
     130                return cols; 
     131        } 
     132 
     133        private static Map<Integer, String> parseCollectionNames(Object[] l) { 
     134                Map<Integer, String> m = new HashMap<Integer, String>(); 
     135                if (l == null) 
     136                        return m; 
     137 
     138                for (Object o : l) { 
     139                        Object[] arr = (Object[]) o; 
     140                        m.put((Integer) arr[0], (String) arr[1]); 
     141                } 
     142                return m; 
     143        } 
     144 
    119145        public static ChangeLog deserialize(byte[] b) { 
    120146                ByteBuffer bb = ByteBuffer.wrap(b); 
    121147                Map<String, Object> m = EncodingRule.decodeMap(bb); 
     148 
     149                Map<Integer, String> colNames = parseCollectionNames((Object[]) m.get("col_names")); 
    122150 
    123151                ChangeLog c = new ChangeLog(); 
     
    127155                c.setManifestId((Integer) m.get("manifest_id")); 
    128156                List<Object> list = Arrays.asList((Object[]) m.get("changeset")); 
    129                 c.setChangeSet(new ArrayList<ConfigChange>(PrimitiveConverter.parseCollection(ConfigChange.class, list))); 
     157                c.setChangeSet(parseConfigChanges(list, colNames)); 
    130158                return c; 
     159        } 
     160 
     161        private static List<ConfigChange> parseConfigChanges(List<Object> list, Map<Integer, String> colNames) { 
     162                Collection<ConfigChange> changes = PrimitiveConverter.parseCollection(ConfigChange.class, list); 
     163                List<ConfigChange> l = new ArrayList<ConfigChange>(changes); 
     164                for (ConfigChange c : l) 
     165                        c.setColName(colNames.get(c.getColId())); 
     166                return l; 
    131167        } 
    132168 
Note: See TracChangeset for help on using the changeset viewer.