Package org.b3log.latke.repository

Examples of org.b3log.latke.repository.RepositoryException


    private void processCompositeFilter(final StringBuilder filterSql, final List<Object> paramList,
                                        final CompositeFilter compositeFilter) throws RepositoryException {
        final List<Filter> subFilters = compositeFilter.getSubFilters();

        if (2 > subFilters.size()) {
            throw new RepositoryException("At least two sub filters in a composite filter");
        }

        filterSql.append("(");

        final Iterator<Filter> iterator = subFilters.iterator();
        while (iterator.hasNext()) {
            final Filter filter = iterator.next();

            if (filter instanceof PropertyFilter) {
                processPropertyFilter(filterSql, paramList, (PropertyFilter) filter);
            } else { // CompositeFilter
                processCompositeFilter(filterSql, paramList, (CompositeFilter) filter);
            }

            if (iterator.hasNext()) {
                switch (compositeFilter.getOperator()) {
                    case AND:
                        filterSql.append(" and ");
                        break;
                    case OR:
                        filterSql.append(" or ");
                        break;
                    default:
                        throw new RepositoryException("Unsupported composite filter[operator=" + compositeFilter.getOperator() + "]");
                }
            }
        }

        filterSql.append(")");
View Full Code Here


    @Override
    public String add(final JSONObject jsonObject) throws RepositoryException {
        final SleepycatTransaction currentTransaction = TX.get();

        if (null == currentTransaction) {
            throw new RepositoryException("Invoking add() outside a transaction");
        }

        String ret = null;
        final Database database = Sleepycat.get(getName(),
                                                Sleepycat.DEFAULT_DB_CONFIG);

        try {
            if (!jsonObject.has(Keys.OBJECT_ID)) {
                ret = Ids.genTimeMillisId();
                jsonObject.put(Keys.OBJECT_ID, ret);
            } else {
                ret = jsonObject.getString(Keys.OBJECT_ID);
            }

            final DatabaseEntry entryKey = new DatabaseEntry(
                    ret.getBytes("UTF-8"));

            final DatabaseEntry data = new DatabaseEntry(
                    Serializer.serialize(jsonObject));

            final OperationStatus operationStatus =
                    database.putNoOverwrite(
                    currentTransaction.getSleepycatTransaction(), entryKey, data);

            switch (operationStatus) {
                case KEYEXIST:
                    LOGGER.log(Level.SEVERE,
                               "Found a duplicated object[oId={0}] in repository[name={1}], ignores this add object operation",
                               new Object[]{ret, getName()});
                    throw new RepositoryException(
                            "Add an object into repository[name=" + getName()
                            + "] failed, caused by duplicated id[" + ret + "]");
                case SUCCESS:
                    LOGGER.log(Level.FINER,
                               "Added an object[oId={0}] in repository[name={1}]",
                               new Object[]{ret, getName()});
                    break;
                default:
                    throw new RepositoryException("Add an object[oId="
                                                  + ret + "] fail");
            }
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        }

        return ret;
    }
View Full Code Here

        }

        final SleepycatTransaction currentTransaction = TX.get();

        if (null == currentTransaction) {
            throw new RepositoryException(
                    "Invoking update() outside a transaction");
        }

        try {
            LOGGER.log(Level.FINER,
                       "Updating an object[oId={0}] in repository[name={1}]",
                       new Object[]{id, getName()});
            // Step 1, 2:
            remove(id);
            // Step 3:
            jsonObject.put(Keys.OBJECT_ID, id);
            // Step 4:
            add(jsonObject);
            LOGGER.log(Level.FINER,
                       "Updated an object[oId={0}] in repository[name={1}]",
                       new Object[]{id, getName()});
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        }
    }
View Full Code Here

        }

        final SleepycatTransaction currentTransaction = TX.get();

        if (null == currentTransaction) {
            throw new RepositoryException(
                    "Invoking remove() outside a transaction");
        }

        final Database database = Sleepycat.get(getName(),
                                                Sleepycat.DEFAULT_DB_CONFIG);
        final Cursor cursor = database.openCursor(currentTransaction.
                getSleepycatTransaction(), CursorConfig.READ_COMMITTED);

        final DatabaseEntry foundKey = new DatabaseEntry();
        final DatabaseEntry foundData = new DatabaseEntry();

        // XXX: optimize performance by using searchKey of cursor
        try {
            while (cursor.getNext(foundKey, foundData, LockMode.DEFAULT)
                   == OperationStatus.SUCCESS) {
                if (new String(foundKey.getData(), "UTF-8").equals(id)) {
                    if (cursor.delete().equals(OperationStatus.SUCCESS)) {
                        LOGGER.log(Level.FINER,
                                   "Removed an object[oId={0}] from repository[name={1}]",
                                   new Object[]{id, getName()});
                    }

                    return;
                }
            }
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        } finally {
            cursor.close();
        }

        LOGGER.log(Level.WARNING,
View Full Code Here

                    return ret;
                }
            }
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        } finally {
            cursor.close();
        }

        LOGGER.log(Level.WARNING,
View Full Code Here

                    return true;
                }
            }
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        } finally {
            cursor.close();
        }

        return false;
View Full Code Here

                                    currentPageNum,
                                    pageSize,
                                    getName()});
        } catch (final Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            throw new RepositoryException(e);
        } finally {
            cursor.close();
        }

        return ret;
View Full Code Here

            final Object property = jsonObject.opt(key);

            if (value.getClass() != property.getClass()
                && !(value instanceof Collection) /* Excludes IN operation */) {
                throw new RepositoryException(
                        "The specified filter[key=" + key
                        + ", valueClass=" + value.getClass()
                        + "] can not compare to property[class="
                        + property.getClass() + "]");
            }

            switch (operator) {
                case EQUAL:
                    if (value.equals(property)) {
                        filteredCnt--;
                    }

                    break;
                case NOT_EQUAL:
                    if (!value.equals(property)) {
                        filteredCnt--;
                    }

                    break;
                case GREATER_THAN:
                    if (greater(property, value)) {
                        filteredCnt--;
                    }

                    break;
                case GREATER_THAN_OR_EQUAL:
                    if (greaterOrEqual(property, value)) {
                        filteredCnt--;
                    }

                    break;

                case LESS_THAN:
                    if (less(property, value)) {
                        filteredCnt--;
                    }

                    break;
                case LESS_THAN_OR_EQUAL:
                    if (lessOrEqual(property, value)) {
                        filteredCnt--;
                    }

                    break;
                case IN:
                    if (in(property, (Collection) value)) {
                        filteredCnt--;
                    }

                    break;
                default:
                    throw new RepositoryException("Unsupported filter operator["
                                                  + operator + "]");
            }
        }

        if (0 == filteredCnt) { // Filtered
View Full Code Here

            final Date object2Date = (Date) object2;

            return object1Date.compareTo(object2Date) > 0;
        }

        throw new RepositoryException("Unsupported type[class=" + object1.
                getClass() + "] for comparison");
    }
View Full Code Here

        final List<FieldDefinition> definitioList = JdbcRepositories.getRepositoriesMap().get(tableName);

        if (definitioList == null) {
            LOGGER.log(Level.SEVERE, "resultSetToJsonObject: null definitioList finded for table  {0}", tableName);
            throw new RepositoryException("resultSetToJsonObject: null definitioList finded for table  " + tableName);
        }

        final Map<String, FieldDefinition> dMap = new HashMap<String, FieldDefinition>();
        for (FieldDefinition fieldDefinition : definitioList) {
            dMap.put(fieldDefinition.getName(), fieldDefinition);
View Full Code Here

TOP

Related Classes of org.b3log.latke.repository.RepositoryException

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.