Package nexj.core.meta.persistence.sql

Examples of nexj.core.meta.persistence.sql.Index


         }
      }

      buf.append(" where ");

      Index pk = m_table.getPrimaryKey();

      nCount = pk.getIndexColumnCount();

      for (int i = 0; i < nCount; ++i)
      {
         if (i > 0)
         {
            buf.append(" and ");
         }

         buf.append(pk.getIndexColumn(i).getColumn().getQuotedName());
         buf.append(" = ");
         m_adapter.appendBind(buf, nValCount++);
      }

      if (m_lockingColumn != null)
      {
         buf.append(" and ");
         buf.append(m_lockingColumn.getQuotedName());
         buf.append(" = ");
         m_adapter.appendBind(buf, nValCount++);
      }

      if (bPrimary)
      {
         if (((RelationalMapping)m_mapping).getKeyGenerator() == null)
         {
            for (int i = 0; i < nCount; ++i)
            {
               if (getValue(pk.getIndexColumn(i).getColumn()) != Undefined.VALUE)
               {
                  m_bKeyChanged = true;
                  break;
               }
            }
View Full Code Here


   {
      buf.append("insert into ");
      buf.append(m_table.getQuotedName());
      buf.append('(');

      Index pk = m_table.getPrimaryKey();
      int nValCount = 0;

      for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
      {
         Column column = pk.getIndexColumn(i).getColumn();

         if (getValue(column) == Undefined.VALUE)
         {
            if (nValCount++ > 0)
            {
               buf.append(", ");
            }

            buf.append(column.getQuotedName());
         }
      }

      boolean bCaseConverted = false;

      for (int i = 0, n = m_table.getColumnCount(); i < n; ++i)
      {
         Column column = m_table.getColumn(i);

         if (getValue(i) != Undefined.VALUE ||
            m_bDenorm && findSource(column) != null)
         {
            if (nValCount++ > 0)
            {
               buf.append(", ");
            }

            buf.append(column.getQuotedName());

            if (m_adapter.isCaseConverted(column))
            {
               buf.append(", ");
               m_adapter.appendCaseConvertedColumn(buf, column);
               bCaseConverted = true;
            }
         }
      }

      buf.append((m_bDenorm) ? ") select " : ") values (");

      if (bCaseConverted | m_bDenorm)
      {
         nValCount = 0;

         for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
         {
            Column column = pk.getIndexColumn(i).getColumn();

            if (getValue(column) == Undefined.VALUE)
            {
               if (nValCount > 0)
               {
                  buf.append(", ");
               }

               m_adapter.appendBind(buf, nBindCount + nValCount++, column);
            }
         }

         // TODO: Support more than just the primary table denorm
         Table denormTable = null;

         for (int i = 0, n = m_table.getColumnCount(); i < n; ++i)
         {
            Column column = m_table.getColumn(i);

            if (getValue(i) != Undefined.VALUE)
            {
               if (nValCount != 0 || denormTable != null)
               {
                  buf.append(", ");
               }

               m_adapter.appendBind(buf, nBindCount + nValCount++, column);

               if (m_adapter.isCaseConverted(column))
               {
                  buf.append(", ");
                  m_adapter.appendCaseConvertedBind(buf, nBindCount + nValCount++, column);
               }
            }
            else
            {
               Column srcColumn = findSource(column);

               if (srcColumn != null)
               {
                  if (nValCount != 0 || denormTable != null)
                  {
                     buf.append(", ");
                  }

                  buf.append("A.");
                  buf.append(srcColumn.getQuotedName());

                  if (m_adapter.isCaseConverted(column))
                  {
                     buf.append(", ");
                     buf.append("A.");
                     m_adapter.appendCaseConvertedColumn(buf, srcColumn);
                  }

                  denormTable = srcColumn.getTable();
               }
            }
         }

         if (m_bDenorm)
         {
            buf.append(" from ");
            buf.append(denormTable.getQuotedName());
            buf.append(" A where ");

            for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
            {
               if (i != 0)
               {
                  buf.append(" and ");
               }

               Column column = pk.getIndexColumn(i).getColumn();

               buf.append("A.");
               buf.append(column.getQuotedName());
               buf.append(" = ");
View Full Code Here

               bind.setValue(stmt, nValCount++, value, m_adapter);
            }
         }
      }

      Index pk = m_table.getPrimaryKey();
      OID oid = m_instance.getOID();

      for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
      {
         Column column = pk.getIndexColumn(i).getColumn();

         value = m_adapter.toBind(column, oid.getValue(i));

         if (m_adapter.isDebug())
         {
View Full Code Here

    * @param stmt The prepared statement.
    * @param nValCount The count of the already set bind values.
    */
   private void bindInsert(PreparedStatement stmt, int nValCount) throws SQLException
   {
      Index pk = m_table.getPrimaryKey();
      OID oid = m_instance.getOID();
      Object value;

      for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
      {
         Column column = pk.getIndexColumn(i).getColumn();

         if (getValue(column) == Undefined.VALUE)
         {
            value = m_adapter.toBind(column, oid.getValue(i));
  
            if (m_adapter.isDebug())
            {
               m_adapter.logBindValue(nValCount, value);
            }
  
            m_adapter.getBind(column).setValue(stmt, nValCount++, value, m_adapter);
         }
      }

      for (int i = 0, n = m_table.getColumnCount(); i < n; ++i)
      {
         value = getValue(i);
        
         if (value != Undefined.VALUE)
         {
            Column column = m_table.getColumn(i);

            value = m_adapter.toBind(column, value);

            Bind bind = m_adapter.getBind(column);

            if (m_adapter.isDebug())
            {
               m_adapter.logBindValue(nValCount, value);
            }

            bind.setValue(stmt, nValCount++, value, m_adapter);

            if (m_adapter.isCaseConverted(column))
            {
               if (m_adapter.isDebug())
               {
                  m_adapter.logBindValue(nValCount, value);
               }

               bind.setValue(stmt, nValCount++, value, m_adapter);
            }
         }
      }

      if (m_bDenorm)
      {
         for (int i = 0, n = pk.getIndexColumnCount(); i < n; ++i)
         {
            Column column = pk.getIndexColumn(i).getColumn();
  
            value = m_adapter.toBind(column, oid.getValue(i));
  
            if (m_adapter.isDebug())
            {
View Full Code Here

     
      buf.append("delete from ");
      buf.append(m_table.getQuotedName());
      buf.append(" where ");
     
      Index pk = m_table.getPrimaryKey();
      int nCount = pk.getIndexColumnCount();
     
      for (int i = 0; i < nCount; ++i)
      {
         if (i > 0)
         {
            buf.append(" and ");
         }

         Column column = pk.getIndexColumn(i).getColumn();

         buf.append(column.getQuotedName());
         buf.append(" = ");
         m_adapter.appendBind(buf, i);
      }
View Full Code Here

   /**
    * @see nexj.core.persistence.sql.SQLWork#bind(java.sql.PreparedStatement, SQLWork)
    */
   public void bind(PreparedStatement stmt, SQLWork proto) throws SQLException
   {
      Index pk = m_table.getPrimaryKey();
      int nCount = pk.getIndexColumnCount();
      Object value;

      for (int i = 0; i < nCount; ++i)
      {
         Column column = pk.getIndexColumn(i).getColumn();

         value = m_adapter.toBind(column, getValue(column));
        
         if (m_adapter.isDebug())
         {
View Full Code Here

    * @return The computed OID.
    */
   public final OID computeOID()
   {
      OID oldOID = m_instance.getOID();
      Index pk = m_table.getPrimaryKey();
      int nCount = pk.getIndexColumnCount();
      Object[] values = null;

      for (int i = 0; i < nCount; ++i)
      {
         Column column = pk.getIndexColumn(i).getColumn();
         Object value = m_valueArray[column.getOrdinal()];
        
         if (value == Undefined.VALUE)
         {
            if (oldOID == null)
View Full Code Here

   /**
    * @see nexj.core.persistence.Work#setKeyValue(nexj.core.meta.persistence.Key, nexj.core.meta.persistence.Key, nexj.core.runtime.Instance)
    */
   public final void setKeyValue(Key dstKey, Key srcKey, Instance instance)
   {
      Index index = (Index)dstKey;
     
      if (index == null)
      {
         return;
      }

      int nCount = index.getIndexColumnCount();

      if (instance == null)
      {
         for (int i = 0; i < nCount; ++i)
         {
            Column column = index.getIndexColumn(i).getColumn();

            if (!column.isPrimary() ||
                !(srcKey instanceof Index) ||
                ((Index)srcKey).getIndexColumn(i).getColumn() != column)
            {
               setInstanceValue(column, null);
            }
         }
      }
      else
      {
         OID oid = instance.getOID();

         if (srcKey.isObjectKey() && nCount != oid.getCount())
         {
            throw new PersistenceException("err.rpc.oidPartCount",
               new Object[]{m_instance.getMetaclass().getName()});
         }

         for (int i = 0; i < nCount; ++i)
         {
            setInstanceValue(index.getIndexColumn(i).getColumn(), oid.getValue(srcKey.getObjectKeyPartOrdinal(i)));
         }
      }
   }
View Full Code Here

      schema = upgrade(step, schema, null);
      table = schema.getTable(m_singleIdxColTableStep.getName());

      assertNotNull(table);

      Index index = table.getPrimaryKey();

      assertNotNull(index);
      assertEquals(
         m_manager.generateIndexName(table.getTableName(),
                                     getPrimaryKeyName(step.getPrimaryKeyName()).replace('.', '_'),
                                     null),
         index.getName());
      assertEquals(1, index.getIndexColumnCount());

      Column column = index.getIndexColumn(0).getColumn();

      assertEquals("id", column.getName());
      assertEquals(Primitive.INTEGER, column.getType());
   }
View Full Code Here

      assertNotNull(table);
      assertEquals(1, table.getIndexCount());
      assertEquals(1, table.getIndex(0).getIndexColumnCount());
      table.setType(Table.MANAGED); // comes in as Table.EXTERNAL from DB

      Index aspect = new Index("aspect", Index.ASPECT, null);

      aspect.addIndexColumn(new IndexColumn(table.getColumn(1), true));
      schema.addIndex(aspect);

      ApplyIndexAspectStep step = new ApplyIndexAspectStep();

      step.setAspectName(aspect.getName());
      step.addPointcutPattern(table.getIndex(0).getName(), true);
      schema = upgrade(step, schema, null);
      table = schema.getTable(m_doubleColTableStep.getName());
      assertNotNull(table);
      assertEquals(1, table.getIndexCount());

      Index index = table.getIndex(0);

      assertEquals(2, index.getIndexColumnCount()); // aspect columns always before index columns
      assertEquals("value", index.getIndexColumn(0).getColumn().getName());
   }
View Full Code Here

TOP

Related Classes of nexj.core.meta.persistence.sql.Index

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.