@Test public void BeanClassOfTExpressionOfQArray() { PathBuilder<Entity> entity = new PathBuilder<Entity>(Entity.class, "entity"); QBean<Entity> beanProjection = Projections.bean( Entity.class, entity.getNumber("cId", Integer.class), entity.getNumber("eId", Integer.class)); assertEquals(Entity.class, beanProjection.newInstance(1, 2).getClass()); }
@Before public void setUp() throws Exception { serializer = new LuceneSerializer(true, true); entityPath = new PathBuilder<Object>(Object.class, "obj"); title = entityPath.getString("title"); author = entityPath.getString("author"); text = entityPath.getString("text"); publisher = entityPath.getString("publisher"); year = entityPath.getNumber("year", Integer.class); rating = entityPath.getString("rating"); gross = entityPath.getNumber("gross", Double.class); longField = entityPath.getNumber("longField", Long.class); shortField = entityPath.getNumber("shortField", Short.class); byteField = entityPath.getNumber("byteField", Byte.class); floatField = entityPath.getNumber("floatField", Float.class); idx = new RAMDirectory(); config = new IndexWriterConfig(Version.LUCENE_31, new StandardAnalyzer(Version.LUCENE_30)) .setOpenMode(IndexWriterConfig.OpenMode.CREATE); writer = new IndexWriter(idx, config); writer.addDocument(createDocument()); writer.close(); IndexReader reader = IndexReader.open(idx); searcher = new IndexSearcher(reader); }
/** * If filter is number its required to know its concrete class so this private helper method * creates and returns predicate based on concrete class. */ @SuppressWarnings({"unchecked", "rawtypes"}) private NumberPath createNumberPath(PathBuilder entityPath, String key, Object filter) { if (filter instanceof BigDecimal) { return entityPath.getNumber(key, BigDecimal.class); } else if (filter instanceof Long) { return entityPath.getNumber(key, Long.class); } else if (filter instanceof Integer) { return entityPath.getNumber(key, Integer.class); } else if (filter instanceof Double) { return entityPath.getNumber(key, Double.class); } else if (filter instanceof Float) { return entityPath.getNumber(key, Float.class); } else if (filter instanceof Byte) { return entityPath.getNumber(key, Byte.class); } else if (filter instanceof Short) { return entityPath.getNumber(key, Short.class); } else { throw new IllegalStateException( "Unknown number type in search filter. Supported type: BigDecimal, Long, Integer, Double, Float, Byte, Short"); } }