Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.deephacks.tools4j.config.internal.core.query;
  
 
 import java.util.List;
 import java.util.Map;
 
 public class ConfigIndex {
     private Class<?> cls;
     private HashMap<StringAttribute<?, ?>> attributes = new HashMap<>();
 
     public ConfigIndex(Schema schema) {
         for(AbstractSchemaProperty property : schema.getIndexed()) {
             String propertyName = property.getName();
             Class<?> type = getType(property);
             if(Number.class.isAssignableFrom(type)) {
                 NumberAttribute attr = new NumberAttribute(propertyName);
                 .put(propertyNameattr);
             } else if (Collection.class.isAssignableFrom(type)) {
                 MultiObjectAttribute attr = new MultiObjectAttribute(propertyName);
                 .put(propertyNameattr);
             } else if (Map.class.isAssignableFrom(type)) {
                 MultiObjectAttribute attr = new MultiObjectAttribute(propertyName);
                 .put(propertyNameattr);
             } else {
                 ObjectAttribute attr = new ObjectAttribute(propertyName);
                 .put(propertyNameattr);
             }
         }
     }
     private Class<?> getType(final AbstractSchemaProperty property) {
         if (property instanceof SchemaProperty) {
             return ((SchemaPropertyproperty).getClassType();
         } else if (property instanceof SchemaPropertyList) {
             return  ((SchemaPropertyListproperty).getClassCollectionType();
         } else if (property instanceof SchemaPropertyRef) {
             return String.class;
         } else if (property instanceof SchemaPropertyRefList ||
                 property instanceof SchemaPropertyRefMap) {
             return ArrayList.class;
         } else {
             throw new IllegalArgumentException("Unrecognized property");
         }
     }
 
     public Attribute get(String field) {
         return .get(field);
     }
 
     public List<Attributeget() {
         List<Attributeattrs = new ArrayList<>();
         for(Attribute att : .values()){
             attrs.add(att);
         }
         return attrs;
     }
 
     private List<FieldgetIndexedFields(Class<?> cls) {
         List<Fieldfields = new ArrayList<>();
         for(final Field field : cls.getDeclaredFields()) {
             field.setAccessible(true);
             if(field.getAnnotation(Index.class) != null) {
                 fields.add(field);
             }
         }
         return fields;
     }
 
     static final class ObjectAttribute extends SimpleNullableAttribute<ConfigIndexFieldsObject> {
         private final String field;
 
         public ObjectAttribute(String field) {
             this. = field;
         }
 
         @Override
         public Object getValue(ConfigIndexFields data) {
             return data.fields.get();
         }
     }
 
     static final class MultiObjectAttribute extends MultiValueNullableAttribute<ConfigIndexFieldsObject> {
         private final String field;
 
         public MultiObjectAttribute(String field) {
            super(fieldfalse);
            this. = field;
        }
        @Override
        public List<ObjectgetNullableValues(ConfigIndexFields data) {
            Object o = data.fields.get();
            if(o == null) {
                return null;
            }
            Class<?> cls = o.getClass();
            if(Collection.class.isAssignableFrom(cls)) {
                return (List<Object>) o;
            } else if(Map.class.isAssignableFrom(cls)) {
                ArrayList<Objectvalues = new ArrayList<>();
                for(Object value : ((Map)o).values()) {
                    values.add(value);
                }
                return values;
            } else {
                throw new IllegalArgumentException("Could not get correct collection from ["+o+"]");
            }
        }
    }
    static final class NumberAttribute extends SimpleNullableAttribute<ConfigIndexFieldsNumber> {
        private final String field;
        public NumberAttribute(String field) {
            this. = field;
        }
        @Override
        public Number getValue(ConfigIndexFields data) {
            return (Numberdata.fields.get();
        }
    }
New to GrepCode? Check out our FAQ X