Package com.psddev.dari.db

Examples of com.psddev.dari.db.State


            page.setDelegate(oldDelegate);
        }
    }

    private void writeDisplayHtml(ToolPageContext page, Object object) throws IOException {
        State state = State.getInstance(object);

        if (state.isNew()) {
            return;
        }

        List<Draft> scheduled = new ArrayList<Draft>();
        List<Draft> drafts = new ArrayList<Draft>();
        List<History> namedHistories = new ArrayList<History>();
        List<History> histories = new ArrayList<History>();

        Object selected = page.getOverlaidHistory(object);

        if (selected == null) {
            selected = page.getOverlaidDraft(object);

            if (selected == null) {
                selected = object;
            }
        }

        for (Draft d : Query.
                from(Draft.class).
                where("objectId = ?", state.getId()).
                selectAll()) {
            if (d.getSchedule() != null) {
                scheduled.add(d);

            } else {
                drafts.add(d);
            }
        }

        Collections.sort(scheduled, new Comparator<Draft>() {
            @Override
            public int compare(Draft x, Draft y) {
                return ObjectUtils.compare(x.getSchedule().getTriggerDate(), y.getSchedule().getTriggerDate(), true);
            }
        });

        Collections.sort(drafts, new Comparator<Draft>() {
            @Override
            public int compare(Draft x, Draft y) {
                return ObjectUtils.compare(
                        x.as(Content.ObjectModification.class).getUpdateDate(),
                        y.as(Content.ObjectModification.class).getUpdateDate(),
                        true);
            }
        });

        for (History h : Query.
                from(History.class).
                where("name != missing and objectId = ?", state.getId()).
                sortAscending("name").
                selectAll()) {
            namedHistories.add(h);
        }

        PaginatedResult<History> historiesResult = Query.
                from(History.class).
                where("name = missing and objectId = ?", state.getId()).
                sortDescending("updateDate").
                select(0, 10);

        for (History h : historiesResult.getItems()) {
            histories.add(h);
        }

        page.writeStart("div", "class", "widget");
            page.writeStart("h1", "class", "icon icon-object-history");
                page.writeHtml("Revisions");
            page.writeEnd();

            if (!(selected instanceof Draft &&
                    state.as(Content.ObjectModification.class).isDraft())) {
                page.writeStart("ul", "class", "links");
                    page.writeStart("li", "class", object.equals(selected) ? "selected" : null);
                        page.writeStart("a", "href", page.originalUrl(null, object));
                            page.writeHtml("Current");
                        page.writeEnd();
                    page.writeEnd();
                page.writeEnd();
            }

            if (!scheduled.isEmpty()) {
                page.writeStart("h2").writeHtml("Scheduled").writeEnd();

                page.writeStart("ul", "class", "links pageThumbnails");
                    for (Draft d : scheduled) {
                        Schedule s = d.getSchedule();
                        String sn = s.getName();

                        page.writeStart("li",
                                "class", d.equals(selected) ? "selected" : null,
                                "data-preview-url", "/_preview?_cms.db.previewId=" + d.getId());
                            page.writeStart("a", "href", page.objectUrl(null, d));
                                if (ObjectUtils.isBlank(sn)) {
                                    page.writeHtml(page.formatUserDateTime(s.getTriggerDate()));
                                    page.writeHtml(" by ");
                                    page.writeObjectLabel(s.getTriggerUser());

                                } else {
                                    page.writeHtml(sn);
                                }
                            page.writeEnd();
                        page.writeEnd();
                    }
                page.writeEnd();
            }

            if (!drafts.isEmpty()) {
                page.writeStart("h2").writeHtml("Drafts").writeEnd();

                page.writeStart("ul", "class", "links pageThumbnails");
                    for (Draft d : drafts) {
                        Content.ObjectModification dcd = d.as(Content.ObjectModification.class);

                        page.writeStart("li",
                                "class", d.equals(selected) ? "selected" : null,
                                "data-preview-url", "/_preview?_cms.db.previewId=" + d.getId());
                            page.writeStart("a", "href", page.objectUrl(null, d));
                                page.writeHtml(page.formatUserDateTime(dcd.getUpdateDate()));
                                page.writeHtml(" by ");
                                page.writeObjectLabel(dcd.getUpdateUser());
                            page.writeEnd();
                        page.writeEnd();
                    }
                page.writeEnd();
            }

            if (!namedHistories.isEmpty()) {
                page.writeStart("h2").writeHtml("Named Past").writeEnd();

                page.writeStart("ul", "class", "links pageThumbnails");
                    for (History h : namedHistories) {
                        page.writeStart("li",
                                "class", h.equals(selected) ? "selected" : null,
                                "data-preview-url", "/_preview?_cms.db.previewId=" + h.getId());
                            page.writeStart("a", "href", page.objectUrl(null, h));
                                page.writeObjectLabel(h);
                            page.writeEnd();
                        page.writeEnd();
                    }
                page.writeEnd();
            }

            if (!histories.isEmpty()) {
                page.writeStart("h2").writeHtml("Past").writeEnd();

                if (historiesResult.hasNext()) {
                    page.writeStart("p");
                        page.writeStart("a",
                                "class", "icon icon-action-search",
                                "target", "_top",
                                "href", page.cmsUrl("/searchAdvancedFull",
                                        Search.SELECTED_TYPE_PARAMETER, ObjectType.getInstance(History.class).getId(),
                                        Search.ADVANCED_QUERY_PARAMETER, "objectId = " + state.getId()));
                            page.writeHtml("View All ");
                            page.writeHtml(historiesResult.getCount());
                            page.writeHtml(" Past Revisions");
                        page.writeEnd();
                    page.writeEnd();
View Full Code Here


                                page.writeEnd();
                            }

                            page.writeStart("ul", "class", "links");
                                for (Object item : trashes.getItems()) {
                                    State itemState = State.getInstance(item);

                                    page.writeStart("li", "class", item.equals(trash) ? "selected" : null);
                                        page.writeStart("a", "href", page.url(null, "id", itemState.getId()));
                                            page.writeHtml(itemState.getLabel());
                                        page.writeEnd();
                                    page.writeEnd();
                                }
                            page.writeEnd();
                        }
View Full Code Here

     * @param object Can't be {@code null}.
     */
    public void setObject(Object object) {
        ErrorUtils.errorIfNull(object, "object");

        State newState = State.getInstance(object);
        Database db = newState.getRealDatabase();

        getState().setDatabase(db);
        setObjectType(newState.getType());
        setObjectId(newState.getId());

        Object oldObject = Query.from(Object.class).where("_id = ?", object).using(db).noCache().first();
        Map<String, Object> newValues = newState.getSimpleValues();

        if (oldObject != null) {
            Map<String, Object> oldValues = State.getInstance(oldObject).getSimpleValues();
            Set<String> keys = new HashSet<String>();

View Full Code Here

            if (!ObjectUtils.isBlank(description)) {
                return description;
            }

            State state = getState();
            ObjectType type = state.getType();

            if (type != null) {
                for (String field : type.as(TypeModification.class).getDescriptionFields()) {
                    Object fieldDescription = state.getByPath(field);

                    if (fieldDescription != null) {
                        description = toMetaTagString(fieldDescription);

                        if (description != null) {
View Full Code Here

                }
            };

            keywords.addAll(getKeywords());

            State state = getState();
            ObjectType type = state.getType();

            if (type != null) {
                for (String field : type.as(TypeModification.class).getKeywordsFields()) {
                    Iterable<?> fieldKeywords = ObjectUtils.to(Iterable.class, state.getByPath(field));

                    if (fieldKeywords != null) {
                        for (Object item : fieldKeywords) {
                            if (item != null) {
                                keywords.add(toMetaTagString(item));
View Full Code Here

    // --- ForwardingDatabase support ---

    private <T> T ab(T object) {
        if (object != null) {
            State state = State.getInstance(object);

            for (Map.Entry<String, AbVariationField> entry : state.as(AbVariationObject.class).getFields().entrySet()) {
                String fieldName = entry.getKey();
                AbVariationField variationField = entry.getValue();

                if (variationField == null) {
                    continue;
                }

                List<AbVariation> variations = variationField.getVariations();
                double total = 0.0;

                for (AbVariation variation : variations) {
                    total += variation.getWeight();
                }

                double accum = 0.0;
                double random = AbFilter.Static.random(getRequest(), state, fieldName);

                for (ListIterator<AbVariation> i = variations.listIterator(variations.size());
                        i.hasPrevious();
                        ) {
                    AbVariation variation = i.previous();
                    accum += variation.getWeight();

                    if (random < accum / total) {
                        state.put(fieldName, variation.getValue());
                        break;
                    }
                }
            }
        }
View Full Code Here

    protected Trash() {
    }

    /** Creates an instance based on the given {@code object}. */
    public Trash(ToolUser user, Object object) {
        State objectState = State.getInstance(object);
        getState().setDatabase(objectState.getDatabase());
        this.deleteDate = new Date();
        this.deleteUser = user;
        this.objectType = objectState.getType();
        this.objectId = objectState.getId();
        this.objectValues = objectState.getValues();
    }
View Full Code Here

    public Object getObject() {
        if (objectType == null) {
            return null;
        } else {
            Object object = objectType.createObject(objectId);
            State state = State.getInstance(object);
            if (objectValues != null) {
                state.getValues().putAll(objectValues);
            }
            return object;
        }
    }
View Full Code Here

    // --- ForwardingDatabase support ---

    private <T> T applyChanges(T object) {
        if (object != null) {
            State state = State.getInstance(object);
            Date date = getDate();

            if (date != null) {
                Draft draft = null;
                Date draftDate = null;

                for (Object dObject : Query.
                        fromAll().
                        and("com.psddev.cms.db.Draft/schedule != missing").
                        and("com.psddev.cms.db.Draft/objectId = ?", object).
                        iterable(0)) {
                    if (!(dObject instanceof Draft)) {
                        continue;
                    }

                    Draft d = (Draft) dObject;
                    Date triggerDate = d.getSchedule().getTriggerDate();

                    if (triggerDate != null &&
                            triggerDate.before(date) &&
                            (draftDate == null ||
                            triggerDate.after(draftDate))) {

                        draft = d;
                        draftDate = triggerDate;
                    }
                }

                if (draft != null) {
                    state.putAll(draft.getObjectChanges());
                }

            } else {
                Map<String, Object> changes = changesById.get(state.getId());

                if (changes != null) {
                    state.putAll(changes);
                }
            }
        }

        return object;
View Full Code Here

    protected void doService(ToolPageContext page) throws IOException, ServletException {
        List<UUID> ids = page.params(UUID.class, ContentSearchAdvanced.ITEMS_PARAMETER);
        Query<?> query = ids.isEmpty() ? new Search(page).toQuery(page.getSite()) : Query.fromAll().where("_id = ?", ids);
        long count = query.count();
        ObjectType type = ObjectType.getInstance(page.param(UUID.class, "typeId"));
        State state = State.getInstance(type.createObject(page.param(UUID.class, "id")));

        state.clear();

        page.writeHeader();
            if (page.isFormPost() &&
                    page.param(String.class, "action-save") != null) {
                try {
                    JspUtils.include(
                            page.getRequest(),
                            page.getResponse(),
                            page,
                            page.cmsUrl("/WEB-INF/objectPost.jsp"),
                            "object", state.getOriginalObject());

                    Map<String, Object> values = state.getValues();
                    Map<String, Object> replaces = new CompactMap<String, Object>();
                    Map<String, Object> adds = new CompactMap<String, Object>();
                    Map<String, Object> removes = new CompactMap<String, Object>();
                    Set<String> clears = new HashSet<String>();

                    for (ObjectField field : type.getFields()) {
                        String name = field.getInternalName();
                        Object value = values.get(name);

                        Operation op = page.param(Operation.class, OPERATION_PARAMETER_PREFIX + name);

                        if (op != null) {
                            if (Operation.REPLACE.equals(op)) {
                                replaces.put(name, value);

                            } else if (Operation.ADD.equals(op)) {
                                adds.put(name, value);

                            } else if (Operation.REMOVE.equals(op)) {
                                removes.put(name, value);

                            } else if (Operation.CLEAR.equals(op)) {
                                clears.add(name);
                            }
                        }
                    }

                    for (Object item : query.selectAll()) {
                        State itemState = State.getInstance(item);

                        itemState.putAll(replaces);

                        for (Map.Entry<String, Object> entry : adds.entrySet()) {
                            String fieldName = entry.getKey();
                            Object newValue = entry.getValue();
                            Object oldValue = itemState.get(fieldName);

                            if (oldValue instanceof Map) {
                                if (newValue instanceof Map) {
                                    ((Map<Object, Object>) oldValue).putAll((Map<Object, Object>) newValue);

                                } else if (newValue instanceof Collection) {
                                    ((Map<Object, Object>) oldValue).keySet().addAll((Collection<Object>) newValue);
                                }

                            } else if (oldValue instanceof Collection) {
                                if (newValue instanceof Map) {
                                    ((Collection<Object>) oldValue).addAll(((Map<Object, Object>) newValue).values());

                                } else if (newValue instanceof Collection) {
                                    ((Collection<Object>) oldValue).addAll((Collection<Object>) newValue);

                                } else {
                                    ((Collection<Object>) oldValue).add(newValue);
                                }

                            } else {
                                itemState.put(fieldName, newValue);
                            }
                        }

                        for (Map.Entry<String, Object> entry : removes.entrySet()) {
                            String fieldName = entry.getKey();
                            Object newValue = entry.getValue();
                            Object oldValue = itemState.get(fieldName);

                            if (oldValue instanceof Map) {
                                if (newValue instanceof Map) {
                                    ((Map<Object, Object>) oldValue).keySet().removeAll(((Map<Object, Object>) newValue).keySet());

                                } else if (newValue instanceof Collection) {
                                    ((Map<Object, Object>) oldValue).keySet().removeAll((Collection<Object>) newValue);
                                }

                            } else if (oldValue instanceof Collection) {
                                if (newValue instanceof Map) {
                                    ((Collection<Object>) oldValue).removeAll(((Map<Object, Object>) newValue).values());

                                } else if (newValue instanceof Collection) {
                                    ((Collection<Object>) oldValue).removeAll((Collection<Object>) newValue);

                                } else {
                                    ((Collection<Object>) oldValue).remove(newValue);
                                }
                            }
                        }

                        for (String clear : clears) {
                            itemState.remove(clear);
                        }

                        try {
                            itemState.save();

                        } catch (Exception error) {
                            LOGGER.warn(String.format(
                                    "Can't save [%s] as part of a bulk edit!", itemState.getId()),
                                    error);
                        }
                    }

                    state.clear();
View Full Code Here

TOP

Related Classes of com.psddev.dari.db.State

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.