示例#1
0
文件: Store.java 项目: nologic/nabs
 public synchronized void setSecondaryConfig(
     Class entityClass, String keyName, SecondaryConfig config) {
   checkOpen();
   String entityClsName = entityClass.getName();
   EntityMetadata entityMeta = checkEntityClass(entityClsName);
   SecondaryKeyMetadata secKeyMeta = checkSecKey(entityMeta, keyName);
   String keyClassName = getSecKeyClass(secKeyMeta);
   String secName = makeSecName(entityClass.getName(), keyName);
   if (secIndexMap.containsKey(secName)) {
     throw new IllegalStateException("Cannot set config after DB is open");
   }
   SecondaryConfig dbConfig = getSecondaryConfig(secName, entityMeta, keyClassName, secKeyMeta);
   if (config.getSortedDuplicates() != dbConfig.getSortedDuplicates()
       || config.getBtreeComparator() != dbConfig.getBtreeComparator()
       || config.getDuplicateComparator() != null
       || config.getAllowPopulate() != dbConfig.getAllowPopulate()
       || config.getKeyCreator() != dbConfig.getKeyCreator()
       || config.getMultiKeyCreator() != dbConfig.getMultiKeyCreator()
       || config.getForeignKeyNullifier() != dbConfig.getForeignKeyNullifier()
       || config.getForeignMultiKeyNullifier() != dbConfig.getForeignMultiKeyNullifier()
       || config.getForeignKeyDeleteAction() != dbConfig.getForeignKeyDeleteAction()
       || config.getForeignKeyDatabase() != null) {
     throw new IllegalArgumentException(
         "One of these properties was illegally changed: "
             + " SortedDuplicates, BtreeComparator, DuplicateComparator,"
             + " AllowPopulate, KeyCreator, MultiKeyCreator,"
             + " ForeignKeyNullifer, ForeignMultiKeyNullifier,"
             + " ForeignKeyDeleteAction, ForeignKeyDatabase");
   }
   secConfigMap.put(secName, config);
 }