Package com.esri.sde.sdk.client

Examples of com.esri.sde.sdk.client.SeTable


     * @throws IOException
     *             if an exception is caught accessing the sde feature class metadata.
     */
    public static FeatureTypeInfo fetchSchema(final String typeName, final String namespace,
            final ISession session) throws IOException {
        final SeTable table = session.getTable(typeName);
        SeLayer layer = null;

        final SeColumnDefinition[] seColumns = session.describe(typeName);
        for (SeColumnDefinition col : seColumns) {
            if (col.getType() == SeColumnDefinition.TYPE_SHAPE) {
                layer = session.getLayer(typeName);
                break;
            }
        }

        final List<AttributeDescriptor> properties = createAttributeDescriptors(layer, namespace,
                seColumns);

        final SimpleFeatureType featureType = createSchema(typeName, namespace, properties);

        SeRegistration registration = session.createSeRegistration(typeName);

        final boolean isMultiVersioned = registration.isMultiVersion();
        final boolean isView = registration.isView();
        final FIDReader fidStrategy;
        fidStrategy = FIDReader.getFidReader(session, table, layer, registration);
        final boolean canDoTransactions;
        {
            final Integer permMask = session.issue(new Command<Integer>() {
                @Override
                public Integer execute(ISession session, SeConnection connection)
                        throws SeException, IOException {
                    return new Integer(table.getPermissions());
                }
            });
            final boolean hasWritePermissions = userHasWritePermissions(permMask.intValue());
            canDoTransactions = hasWritePermissions
                    && (fidStrategy instanceof FIDReader.SdeManagedFidReader || fidStrategy instanceof FIDReader.UserManagedFidReader)
View Full Code Here


        // TODO: refactor, this is expensive to do for each row to insert
        // TODO: refactor to some sort of strategy object like done for
        // FIDReader
        final SeLayer layer = getLayer();
        final SeTable table = getTable();
        // ArcSDE JavaDoc only says: "Returns a range of row id values"
        // http://edndoc.esri.com/arcsde/9.1/java_api/docs/com/esri/sde/sdk/client/setable.html#getIds
        // (int)
        /*
         * I've checked empirically it is to return a range of available ids. And also found it
         * works for layers but not for registered tables with non spatial layer.. sigh..
         */
        final SeTableIdRange ids = layer == null ? null : table.getIds(1);
        if (ids == null) {
            return null;
        }
        final SeObjectId startId = ids.getStartId();
        final long id = startId.longValue();
View Full Code Here

        try {
            final String tableName;
            {
                ISession session = testData.getConnectionPool().getSession();
                try {
                    SeTable versionedTable = testData.createVersionedTable(session);
                    tableName = versionedTable.getQualifiedName();
                } finally {
                    session.dispose();
                }
            }
View Full Code Here

        Filter filter = query.getFilter();

        LOGGER.fine("Creating new ArcSDEQuery");

        final String typeName = fullSchema.getTypeName();
        final SeTable sdeTable = session.getTable(typeName);
        final SeLayer sdeLayer;
        if (fullSchema.getGeometryDescriptor() == null) {
            sdeLayer = null;
        } else {
            sdeLayer = session.getLayer(typeName);
View Full Code Here

        // the PlainSelect,
        // then construct the query info dynamically when needed?
        if (layerName.indexOf(" AS") > 0) {
            layerName = layerName.substring(0, layerName.indexOf(" AS"));
        }
        final SeTable sdeTable = session.getTable(layerName);
        final SeLayer sdeLayer;
        if (fullSchema.getGeometryDescriptor() == null) {
            sdeLayer = null;
        } else {
            sdeLayer = session.getLayer(layerName);
View Full Code Here

                // } catch (SeException e) {
                // // LOGGER.log(Level.WARNING, "while deleteing layer " +
                // tableName + " got '" +
                // // e.getSeError().getErrDesc() + "'");
                // }
                SeTable table = new SeTable(connection, tableName);
                try {
                    table.delete();
                } catch (SeException ignorable) {
                    // table did not already exist? or was locked...
                    if (!ignoreFailure) {
                        throw new ArcSdeException(ignorable);
                    }
View Full Code Here

             * Create a qualified table name with current user's name and the name of the table to
             * be created, "EXAMPLE".
             */
            final String tableName = getTempTableName(session);

            final SeTable tempTable = session.createSeTable(tableName);
            final SeLayer tempTableLayer = session.issue(new Command<SeLayer>() {
                @Override
                public SeLayer execute(ISession session, SeConnection connection)
                        throws SeException, IOException {
                    SeLayer tempTableLayer = new SeLayer(connection);
View Full Code Here

        try {
            session.issue(new Command<Void>() {
                @Override
                public Void execute(ISession session, SeConnection connection) throws SeException,
                        IOException {
                    SeTable table;
                    try {
                        table = session.getTable(tempTableName);
                    } catch (IOException e) {
                        // table does not exist, its ok.
                        return null;
                    }
                    table.truncate();
                    return null;
                }
            });
        } finally {
            session.dispose();
View Full Code Here

        final Command<Void> createCmd = new Command<Void>() {

            @Override
            public Void execute(ISession session, SeConnection connection) throws SeException,
                    IOException {
                final SeTable table = new SeTable(connection, tableName);

                try {
                    table.delete();
                } catch (SeException e) {
                    LOGGER.fine("table " + tableName + " does not already exist");
                }

                final boolean isNullable = true;

                // ROW_ID, INT_COL, DATE_COL, STRING_COL, SE_ANNO_CAD_DATA
                final int numCols = 5;
                final SeColumnDefinition[] colDefs = new SeColumnDefinition[numCols];

                // first column to be SDE managed feature id
                colDefs[0] = new SeColumnDefinition("ROW_ID", SeColumnDefinition.TYPE_INT32, 10, 0,
                        false);
                colDefs[1] = new SeColumnDefinition("INT_COL", SeColumnDefinition.TYPE_INT32, 10,
                        0, isNullable);
                colDefs[2] = new SeColumnDefinition("DATE_COL", SeColumnDefinition.TYPE_DATE, 1, 0,
                        isNullable);
                colDefs[3] = new SeColumnDefinition("STRING_COL", SeColumnDefinition.TYPE_STRING,
                        25, 0, isNullable);
                // use a blob type just to make sure they're correctly ignored
                colDefs[4] = new SeColumnDefinition("SE_ANNO_CAD_DATA",
                        SeColumnDefinition.TYPE_BLOB, 4000, 0, isNullable);

                /*
                 * Create the table using the DBMS default configuration keyword. Valid keywords are
                 * defined in the dbtune table.
                 */
                table.create(colDefs, configKeyword);

                /*
                 * Register the column to be used as feature id and managed by sde
                 */
                if (SeRegistration.SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE != rowIdColumnType) {
                    SeRegistration reg = new SeRegistration(connection, table.getName());
                    LOGGER.fine("setting rowIdColumnName to ROW_ID in table " + reg.getTableName());
                    reg.setRowIdColumnName("ROW_ID");
                    reg.setRowIdColumnType(rowIdColumnType);
                    reg.alter();
                }
View Full Code Here

            @Override
            public SeTable execute(ISession session, SeConnection connection) throws SeException,
                    IOException {
                // SeConnection conn = session.unWrap();
                SeLayer layer = new SeLayer(connection);
                SeTable table;

                /*
                 * Create a qualified table name with current user's name and the name of the table
                 * to be created, "EXAMPLE".
                 */
                String dbname = connection.getDatabaseName();
                String user = connection.getUser();
                StringBuffer sb = new StringBuffer();
                if (dbname != null && dbname.length() > 0) {
                    sb.append(dbname).append(".");
                }
                if (user != null && user.length() > 0) {
                    sb.append(user).append(".");
                }
                String tableName = sb.append("VERSIONED_EXAMPLE").toString().toUpperCase();
                table = new SeTable(connection, tableName);
                layer.setTableName("VERSIONED_EXAMPLE");

                try {
                    table.delete();
                } catch (Exception e) {
                    // ignore, the table didn't exist already
                }

                SeColumnDefinition[] colDefs = new SeColumnDefinition[2];
                boolean isNullable = true;
                // first column to be SDE managed feature id
                colDefs[0] = new SeColumnDefinition("ROW_ID", SeColumnDefinition.TYPE_INT32, 10, 0,
                        false);
                colDefs[1] = new SeColumnDefinition("NAME", SeColumnDefinition.TYPE_STRING, 25, 0,
                        isNullable);

                table.create(colDefs, getConfigKeyword());
                layer.setSpatialColumnName("SHAPE");

                /*
                 * Register the column to be used as feature id and managed by sde
                 */
                SeRegistration reg = new SeRegistration(connection, table.getName());
                LOGGER.fine("setting rowIdColumnName to ROW_ID in table " + reg.getTableName());
                reg.setRowIdColumnName("ROW_ID");
                reg.setRowIdColumnType(SeRegistration.SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE);
                reg.alter();

View Full Code Here

TOP

Related Classes of com.esri.sde.sdk.client.SeTable

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.