Package org.apache.cayenne.map

Examples of org.apache.cayenne.map.DbEntity


    public void testAddForeignKeyAfterTable() throws Exception {
        dropTableIfPresent(node, "NEW_TABLE");

        assertTokensAndExecute(node, map, 0, 0);

        DbEntity dbEntity = new DbEntity("NEW_TABLE");

        DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
        column1.setMandatory(true);
        column1.setPrimaryKey(true);
        dbEntity.addAttribute(column1);

        DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
        column2.setMaxLength(10);
        column2.setMandatory(false);
        dbEntity.addAttribute(column2);

        DbAttribute column3 = new DbAttribute("ARTIST_ID", Types.BIGINT, dbEntity);
        column3.setMandatory(false);
        dbEntity.addAttribute(column3);

        map.addDbEntity(dbEntity);

        DbEntity artistDbEntity = map.getDbEntity("ARTIST");
        assertNotNull(artistDbEntity);

        assertTokensAndExecute(node, map, 1, 0);
        assertTokensAndExecute(node, map, 0, 0);

        // relation from new_table to artist
        DbRelationship r1 = new DbRelationship("toArtistR1");
        r1.setSourceEntity(dbEntity);
        r1.setTargetEntity(artistDbEntity);
        r1.setToMany(false);
        r1.addJoin(new DbJoin(r1, "ARTIST_ID", "ARTIST_ID"));
        dbEntity.addRelationship(r1);

        // relation from artist to new_table
        DbRelationship r2 = new DbRelationship("toNewTableR2");
        r2.setSourceEntity(artistDbEntity);
        r2.setTargetEntity(dbEntity);
        r2.setToMany(true);
        r2.addJoin(new DbJoin(r2, "ARTIST_ID", "ARTIST_ID"));
        artistDbEntity.addRelationship(r2);

        assertTokensAndExecute(node, map, 1, 0);
        assertTokensAndExecute(node, map, 0, 0);

        DataContext ctxt = createDataContext();

        // remove relationships
        dbEntity.removeRelationship(r1.getName());
        artistDbEntity.removeRelationship(r2.getName());
        ctxt.getEntityResolver().clearCache();
        assertTokensAndExecute(node, map, 1, 1);
        assertTokensAndExecute(node, map, 0, 0);

        // clear up
View Full Code Here


    @Override
    protected boolean interceptPaginatedQuery() {
        if (metadata.getPageSize() > 0) {

            DbEntity dbEntity = metadata.getDbEntity();
            List<?> paginatedList = dbEntity != null
                    && dbEntity.getPrimaryKeys().size() == 1
                    ? new SimpleIdIncrementalFaultList<Object>(
                            (DataContext) actingContext,
                            query)
                    : new IncrementalFaultList<Object>((DataContext) actingContext, query);
View Full Code Here

    public void testAddTable() throws Exception {
        dropTableIfPresent(node, "NEW_TABLE");
        assertTokensAndExecute(node, map, 0, 0);

        DbEntity dbEntity = new DbEntity("NEW_TABLE");

        DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
        column1.setMandatory(true);
        column1.setPrimaryKey(true);
        dbEntity.addAttribute(column1);

        DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
        column2.setMaxLength(10);
        column2.setMandatory(false);
        dbEntity.addAttribute(column2);

        // for the new entity to the db
        execute(mergerFactory().createCreateTableToDb(dbEntity));

        List<MergerToken> tokens = createMergeTokens();
        assertEquals(1, tokens.size());
        MergerToken token = tokens.get(0);
        if (token.getDirection().isToDb()) {
            token = token.createReverse(mergerFactory());
        }
        assertTrue(token.getClass().getName(), token instanceof CreateTableToModel);
        logTokens(Collections.singletonList(token));
        execute(token);

        ObjEntity objEntity = null;
        for (ObjEntity candiate : map.getObjEntities()) {
            if (candiate.getDbEntity() == null) {
                continue;
            }
            if (candiate.getDbEntity().getName().equalsIgnoreCase(dbEntity.getName())) {
                objEntity = candiate;
                break;
            }
        }
        assertNotNull(objEntity);
       
        assertEquals(objEntity.getClassName(), map.getDefaultPackage() + "." + objEntity.getName());
        assertEquals(objEntity.getSuperClassName(), map.getDefaultSuperclass());
        assertEquals(objEntity.getClientClassName(),
                map.getDefaultClientPackage() + "." + objEntity.getName());
        assertEquals(objEntity.getClientSuperClassName(), map.getDefaultClientSuperclass());

        assertEquals(1, objEntity.getAttributes().size());
        assertEquals("java.lang.String", objEntity
                .getAttributes()
                .iterator()
                .next()
                .getType());

        DataContext ctxt = createDataContext();

        // clear up
        // fix psql case issue
        map.removeDbEntity(objEntity.getDbEntity().getName(), true);
        map.removeObjEntity(objEntity.getName(), true);
        map.removeDbEntity(dbEntity.getName(), true);
        ctxt.getEntityResolver().clearCache();
        assertNull(map.getObjEntity(objEntity.getName()));
        assertNull(map.getDbEntity(dbEntity.getName()));
        assertFalse(map.getDbEntities().contains(dbEntity));

        assertTokensAndExecute(node, map, 1, 0);
        assertTokensAndExecute(node, map, 0, 0);
    }
View Full Code Here

    public void testEvaluateDB_PATH_DbEntity() throws Exception {
        Expression e = Expression.fromString("db:paintingArray.PAINTING_TITLE");

        ObjEntity ae = getDomain().getEntityResolver().lookupObjEntity(Artist.class);
        DbEntity ade = ae.getDbEntity();

        Object objTarget = e.evaluate(ae);
        assertTrue(objTarget instanceof DbAttribute);

        Object dbTarget = e.evaluate(ade);
View Full Code Here

     */
    public void testDbEntityQualifier() throws Exception {
        ObjectContext context = createDataContext();
       
        SelectQuery q = new SelectQuery(Artist.class);
        final DbEntity entity = getNode().getEntityResolver().getDbEntity("ARTIST");
        final DbEntity middleEntity = getNode().getEntityResolver().getDbEntity("ARTIST_GROUP");
        entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
        middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));

        try {
            Template test = new Template() {
                @Override
                void test(SelectTranslator transl) throws Exception {
                    String generatedSql = transl.createSqlString();
   
                    // do some simple assertions to make sure all parts are in
                    assertNotNull(generatedSql);
                    assertTrue(generatedSql.startsWith("SELECT "));
                    assertTrue(generatedSql.indexOf(" FROM ") > 0);
                    if (generatedSql.contains("RTRIM")) {
                        assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
                        }
                    else {
                        assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
                        }
                }
            };
   
            test.test(q);
            context.performQuery(q);           
           
            //testing outer join!!
            q = new SelectQuery(Painting.class);
            q.addOrdering("toArtist+.artistName", SortOrder.ASCENDING);
            test.test(q);
            context.performQuery(q);
           
            //testing quering from related table
            q = new SelectQuery(Painting.class,
                    ExpressionFactory.matchExp("toArtist.artistName", "foo"));
            test.test(q);
            context.performQuery(q);
           
            //testing flattened rels
            q = new SelectQuery(Artist.class, ExpressionFactory.matchExp("groupArray.name", "bar"));
            new Template() {
                @Override
                void test(SelectTranslator transl) throws Exception {
                    assertTrue(transl.createSqlString().indexOf("GROUP_ID = ") > 0);
                }
            }.test(q);
            context.performQuery(q);
        }
        finally {
            entity.setQualifier(null);
            middleEntity.setQualifier(null);
        }
    }
View Full Code Here

    public void testCreateSqlStringWithQuoteSqlIdentifiers() throws Exception {

        try {
            SelectQuery q = new SelectQuery(Artist.class);
            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(true);
            q.addOrdering("dateOfBirth", SortOrder.ASCENDING);

            Template test = new Template() {

                @Override
                void test(SelectTranslator transl) throws Exception {
                    JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter()
                            .getAdapter();
                    String charStart = adapter.getIdentifiersStartQuote();
                    String charEnd = adapter.getIdentifiersEndQuote();

                    String s = transl.createSqlString();
                    assertTrue(s.startsWith("SELECT "));
                    int iFrom = s.indexOf(" FROM ");
                    assertTrue(iFrom > 0);
                    int artistName = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_NAME" + charEnd);
                    assertTrue(artistName > 0 && artistName < iFrom);
                    int artistId = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistId > 0 && artistId < iFrom);
                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd);
                    assertTrue(dateOfBirth > 0 &&
                            dateOfBirth < iFrom);                  
                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
                            + " " + charStart + "t0" + charEnd);
                    assertTrue(iArtist > iFrom);
                    int iOrderBy = s.indexOf(" ORDER BY " );
                    int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd, iOrderBy);
                    assertTrue(iOrderBy > iArtist);
                    assertTrue(dateOfBirth2 > iOrderBy);
                 }
            };

            test.test(q);
        }
        finally {
            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(false);
        }

    }
View Full Code Here

    public void testCreateSqlStringWithQuoteSqlIdentifiers2() throws Exception {

        try {
            SelectQuery q = new SelectQuery(Artist.class);
            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(true);
            q.setQualifier(ExpressionFactory.greaterExp("dateOfBirth", new Date()));
            q.andQualifier(ExpressionFactory.lessExp("dateOfBirth", new Date()));

            Template test = new Template() {

                @Override
                void test(SelectTranslator transl) throws Exception {

                    JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter()
                            .getAdapter();
                    String charStart = adapter.getIdentifiersStartQuote();
                    String charEnd = adapter.getIdentifiersEndQuote();

                    String s = transl.createSqlString();
                   
                    assertTrue(s.startsWith("SELECT "));
                    int iFrom = s.indexOf(" FROM ");
                    assertTrue(iFrom > 0);
                    int artistName = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_NAME" + charEnd);
                    assertTrue(artistName > 0 && artistName < iFrom);
                    int artistId = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistId > 0 && artistId < iFrom);
                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd);
                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);                  
                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
                            + " " + charStart + "t0" + charEnd);
                    assertTrue(iArtist > iFrom);
                    int iWhere = s.indexOf(" WHERE ");
                    assertTrue(iWhere > iArtist);
                   
                    int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd + " > ?");
                    assertTrue(dateOfBirth2 > iWhere);
                   
                    int iAnd = s.indexOf(" AND ");
                    assertTrue(iAnd > iWhere);
                    int dateOfBirth3 = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd + " < ?");
                    assertTrue(dateOfBirth3 > iAnd);
                   
                 }
            };

            test.test(q);
        }
        finally {
            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(false);
        }
    }
View Full Code Here

            SelectQuery q = new SelectQuery(Artist.class, Expression
                    .fromString("paintingArray.paintingTitle = 'a'"));
            q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
                    PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);

            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(true);

            Template test = new Template() {

                @Override
                void test(SelectTranslator transl) throws Exception {
                    JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter()
                            .getAdapter();
                    String charStart = adapter.getIdentifiersStartQuote();
                    String charEnd = adapter.getIdentifiersEndQuote();

                   
                    String s = transl.createSqlString();
                   
                    assertTrue(s.startsWith("SELECT DISTINCT "));
                    int iFrom = s.indexOf(" FROM ");
                    assertTrue(iFrom > 0);
                    int artistName = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_NAME" + charEnd);
                    assertTrue(artistName > 0 && artistName < iFrom);
                    int artistId = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistId > 0 && artistId < iFrom);
                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd);
                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
                    int estimatedPrice = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "ESTIMATED_PRICE" + charEnd);
                    assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
                    int paintingDescription = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "PAINTING_DESCRIPTION" + charEnd);
                    assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
                    int paintingTitle = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "PAINTING_TITLE" + charEnd);
                    assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
                    int artistIdT1 = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
                    int galleryId = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "GALLERY_ID" + charEnd);
                    assertTrue(galleryId > 0 && galleryId < iFrom);
                    int paintingId = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "PAINTING_ID" + charEnd);
                    assertTrue(paintingId > 0 && paintingId < iFrom);
                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
                            + " " + charStart + "t0" + charEnd);
                    assertTrue(iArtist > iFrom);
                    int iLeftJoin = s.indexOf("LEFT JOIN");
                    assertTrue(iLeftJoin > iFrom);
                    int iPainting = s.indexOf(charStart + "PAINTING" + charEnd
                            + " " + charStart + "t1" + charEnd);
                    assertTrue(iPainting > iLeftJoin);
                    int iOn = s.indexOf(" ON ");
                    assertTrue(iOn > iLeftJoin);
                    int iArtistId = s.indexOf(charStart + "t0"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd,  iLeftJoin);
                    assertTrue(iArtistId > iOn);
                    int iArtistIdT1 = s.indexOf(charStart + "t1"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
                    assertTrue(iArtistIdT1 > iOn);
                    int i = s.indexOf("=", iLeftJoin);
                    assertTrue(iArtistIdT1 > i || iArtistId > i);
                    int iJoin = s.indexOf("JOIN");
                    assertTrue(iJoin > iLeftJoin);
                    int iPainting2 = s.indexOf(charStart + "PAINTING" + charEnd
                            + " " + charStart + "t2" + charEnd);
                    assertTrue(iPainting2 > iJoin);
                    int iOn2 = s.indexOf(" ON ");
                    assertTrue(iOn2 > iJoin);
                    int iArtistId2 = s.indexOf(charStart + "t0"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
                    assertTrue(iArtistId2 > iOn2);
                    int iArtistId2T2 = s.indexOf(charStart + "t2"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
                    assertTrue(iArtistId2T2 > iOn2);
                    int i2 = s.indexOf("=", iJoin);
                    assertTrue(iArtistId2T2 > i2 || iArtistId2 > i2);
                    int iWhere = s.indexOf(" WHERE ");
                    assertTrue(iWhere > iJoin);
                   
                    int paintingTitle2 = s.indexOf(charStart
                            + "t2" + charEnd + "." + charStart + "PAINTING_TITLE" + charEnd + " = ?");
                    assertTrue(paintingTitle2 > iWhere);
                }
            };

            test.test(q);
        }
        finally {
            DbEntity entity = getDbEntity("ARTIST");
            entity.getDataMap().setQuotingSQLIdentifiers(false);
        }
    }
View Full Code Here

        try {
            SelectQuery q = new SelectQuery(Painting.class);
            q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
                    PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);

            DbEntity entity = getDbEntity("PAINTING");
            entity.getDataMap().setQuotingSQLIdentifiers(true);

            Template test = new Template() {

                @Override
                void test(SelectTranslator transl) throws Exception {
                    JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter()
                            .getAdapter();
                    String charStart = adapter.getIdentifiersStartQuote();
                    String charEnd = adapter.getIdentifiersEndQuote();
                    String s = transl.createSqlString();
                   
                    assertTrue(s.startsWith("SELECT "));
                    int iFrom = s.indexOf(" FROM ");
                    assertTrue(iFrom > 0);
                   
                    int paintingDescription = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "PAINTING_DESCRIPTION" + charEnd);
                    assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
                    int paintingTitle = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "PAINTING_TITLE" + charEnd);
                    assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
                    int artistIdT1 = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
                    int estimatedPrice = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "ESTIMATED_PRICE" + charEnd);
                    assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
                   int galleryId = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "GALLERY_ID" + charEnd);
                    assertTrue(galleryId > 0 && galleryId < iFrom);
                    int paintingId = s.indexOf(charStart + "t0" + charEnd
                            + "." + charStart + "PAINTING_ID" + charEnd);
                    assertTrue(paintingId > 0 && paintingId < iFrom);
                    int artistName = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "ARTIST_NAME" + charEnd);
                    assertTrue(artistName > 0 && artistName < iFrom);
                    int artistId = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "ARTIST_ID" + charEnd);
                    assertTrue(artistId > 0 && artistId < iFrom);
                    int dateOfBirth = s.indexOf(charStart + "t1" + charEnd
                            + "." + charStart + "DATE_OF_BIRTH" + charEnd);
                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);                 
                    int iPainting = s.indexOf(charStart + "PAINTING" + charEnd
                            + " " + charStart + "t0" + charEnd);
                    assertTrue(iPainting > iFrom);
                 
                    int iLeftJoin = s.indexOf("LEFT JOIN");
                    assertTrue(iLeftJoin > iFrom);
                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
                            + " " + charStart + "t1" + charEnd);
                    assertTrue(iArtist > iLeftJoin);
                    int iOn = s.indexOf(" ON ");
                    assertTrue(iOn > iLeftJoin);
                    int iArtistId = s.indexOf(charStart + "t0"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd,  iLeftJoin);
                    assertTrue(iArtistId > iOn);
                    int iArtistIdT1 = s.indexOf(charStart + "t1"
                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
                    assertTrue(iArtistIdT1 > iOn);
                    int i = s.indexOf("=", iLeftJoin);
                    assertTrue(iArtistIdT1 > i || iArtistId > i);
                 }
            };

            test.test(q);
        }
        finally {
            DbEntity entity = getDbEntity("PAINTING");
            entity.getDataMap().setQuotingSQLIdentifiers(false);
        }
    }
View Full Code Here

        SelectTranslator tr = makeTranslator(q);

        List columns = tr.buildResultColumns();

        // all DbAttributes must be included
        DbEntity entity = getDbEntity("PAINTING");
        for (final DbAttribute a : entity.getAttributes()) {
            ColumnDescriptor c = new ColumnDescriptor(a, "t0");
            assertTrue("No descriptor for " + a + ", columns: " + columns, columns
                    .contains(c));
        }
    }
View Full Code Here

TOP

Related Classes of org.apache.cayenne.map.DbEntity

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.