Package com.psddev.dari.db

Examples of com.psddev.dari.db.State


                State.getInstance(object).getExtras().put(OVERLAID_DRAFT_EXTRA, draft);
            }

        } else {
            State state = State.getInstance(object);

            History history = Query.
                    from(History.class).
                    where("id = ?", param(UUID.class, HISTORY_ID_PARAMETER)).
                    and("objectId = ?", objectId).
                    first();

            if (history != null) {
                state.getExtras().put(OVERLAID_HISTORY_EXTRA, history);
                state.setValues(history.getObjectOriginals());
                state.setStatus(StateStatus.SAVED);

            } else if (objectId != null) {
                Object draftObject = Query.
                        fromAll().
                        where("id = ?", draftId).
                        and("com.psddev.cms.db.Draft/objectId = ?", objectId).
                        first();

                if (draftObject instanceof Draft) {
                    Draft draft = (Draft) draftObject;

                    state.getExtras().put(OVERLAID_DRAFT_EXTRA, draft);
                    state.getValues().putAll(draft.getObjectChanges());
                }
            }

            UUID variationId = param(UUID.class, VARIATION_ID_PARAMETER);

            if (variationId != null) {
                @SuppressWarnings("unchecked")
                Map<String, Object> variationValues = (Map<String, Object>) state.getByPath("variations/" + variationId.toString());

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

        if (object != null) {
            State.getInstance(object).setResolveInvisible(true);
        }

        Template template = Query.from(Template.class).where("_id = ?", param(UUID.class, "templateId")).first();

        if (template != null) {
            if (object == null) {
                Set<ObjectType> contentTypes = template.getContentTypes();

                if (!contentTypes.isEmpty()) {
                    object = contentTypes.iterator().next().createObject(objectId);
                    State.getInstance(object).as(Site.ObjectModification.class).setOwner(getSite());
                }
            }

            if (object != null) {
                State.getInstance(object).as(Template.ObjectModification.class).setDefault(template);
            }

        } else if (object != null) {
            State state = State.getInstance(object);

            if (state.isNew()) {
                List<Template> templates = Template.Static.findUsable(object);

                if (!templates.isEmpty()) {
                    state.as(Template.ObjectModification.class).setDefault(templates.iterator().next());
                }
            }
        }

        if (object != null) {
            State state = State.getInstance(object);
            Content.ObjectModification contentData = state.as(Content.ObjectModification.class);

            if (contentData.isDraft()) {
                Draft draft = Query.from(Draft.class).where("objectId = ?", state.getId()).first();

                if (draft != null) {
                    state.getExtras().put(OVERLAID_DRAFT_EXTRA, draft);
                }
            }
        }

        return object;
View Full Code Here


            }

            page.write("\r\n");

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

                if (!ids.isEmpty() && !ids.contains(itemState.getId())) {
                    continue;
                }

                page.write("\"");
                writeCsvItem(page, page.getTypeLabel(item));
                page.write("\",\"");
                writeCsvItem(page, page.getObjectLabel(item));
                page.write("\"");

                for (ObjectField field : fields) {
                    page.write(",\"");

                    if ("cms.directory.paths".equals(field.getInternalName())) {
                        for (Iterator<Directory.Path> i = itemState.as(Directory.ObjectModification.class).getPaths().iterator(); i.hasNext();) {
                            Directory.Path p = i.next();
                            String path = p.getPath();

                            page.writeHtml(path);
                            page.writeHtml(" (");
                            page.writeHtml(p.getType());
                            page.writeHtml(")");

                            if (i.hasNext()) {
                                page.write(", ");
                            }
                        }

                    } else {
                        for (Iterator<Object> i = CollectionUtils.recursiveIterable(itemState.get(field.getInternalName())).iterator(); i.hasNext();) {
                            Object value = i.next();
                            page.writeObject(value);
                            if (i.hasNext()) {
                                page.write(", ");
                            }
                        }
                    }

                    page.write("\"");
                }

                page.write("\r\n");
            }

            return;

        } else if (page.param(String.class, "action-trash") != null) {
            Iterator<Object> queryIterator = query.iterable(0).iterator();

            try {
                while (queryIterator.hasNext()) {
                    Object item = queryIterator.next();
                    State itemState = State.getInstance(item);

                    if (!ids.isEmpty() && !ids.contains(itemState.getId())) {
                        continue;
                    }

                    page.trash(item);
                }

            } finally {
                if (queryIterator instanceof Closeable) {
                    ((Closeable) queryIterator).close();
                }
            }

            page.getResponse().sendRedirect(page.param(String.class, "returnUrl"));
            return;
        }

        long offset = page.param(long.class, "offset");
        int limit = page.pageParam(int.class, "limit", 20);
        PaginatedResult<Object> result;

        try {
            result = query.select(offset, limit);

        } catch (RuntimeException error) {
            result = null;
        }

        page.putOverride(Recordable.class, new HtmlFormatter<Recordable>() {
            @Override
            public void format(HtmlWriter writer, Recordable object) throws IOException {
                ToolPageContext page = (ToolPageContext) writer;
                page.writeObjectLabel(object);
            }
        });

        page.putOverride(Metric.class, new HtmlFormatter<Metric>() {
            @Override
            public void format(HtmlWriter writer, Metric object) throws IOException {
                writer.write(new Double(object.getSum()).toString());
            }
        });

        page.putOverride(Content.class, new HtmlFormatter<Content>() {
            @Override
            public void format(HtmlWriter writer, Content content) throws IOException {
                ToolPageContext page = (ToolPageContext) writer;
                page.writeStart("a",
                        "href", page.objectUrl("/content/edit.jsp", content));
                    page.writeObjectLabel(content);
                page.writeEnd();
            }
        });

        page.putOverride(StorageItem.class, new HtmlFormatter<StorageItem>() {
            @Override
            public void format(HtmlWriter writer, StorageItem item) throws IOException {
                ToolPageContext page = (ToolPageContext) writer;
                page.writeElement("img",
                        "height", 100,
                        "src", ImageEditor.Static.getDefault() != null ?
                                new ImageTag.Builder(item).setHeight(100).toUrl() :
                                item.getPublicUrl());
            }
        });

        page.writeHeader();
            page.writeStart("div", "class", "widget");
                page.writeStart("h1", "class", "icon icon-search");
                    page.writeHtml("Advanced Search");
                page.writeEnd();

                page.writeStart("form",
                        "method", "get",
                        "action", page.url(null));
                    page.writeStart("div", "class", "inputContainer");
                        page.writeStart("div", "class", "inputLabel");
                            page.writeStart("label", "for", page.createId());
                                page.writeHtml("Type");
                            page.writeEnd();
                        page.writeEnd();

                        page.writeStart("div", "class", "inputSmall");
                            page.writeTypeSelect(
                                    environment.getTypes(),
                                    type,
                                    "Any Types",
                                    "data-bsp-autosubmit", "",
                                    "name", TYPE_PARAMETER,
                                    "data-searchable", true);
                        page.writeEnd();
                    page.writeEnd();

                    page.writeStart("div", "class", "inputContainer");
                        page.writeStart("div", "class", "inputLabel");
                            page.writeStart("label", "for", page.createId());
                                page.writeHtml("Query");
                            page.writeEnd();
                        page.writeEnd();

                        page.writeStart("div", "class", "inputSmall");
                            page.writeStart("textarea",
                                    "id", page.getId(),
                                    "name", PREDICATE_PARAMETER);
                                page.writeHtml(predicate);
                            page.writeEnd();
                        page.writeEnd();
                    page.writeEnd();

                    page.writeStart("div", "class", "inputContainer");
                        page.writeStart("div", "class", "inputLabel");
                            page.writeStart("label", "for", page.createId());
                                page.writeHtml("Fields");
                            page.writeEnd();
                        page.writeEnd();

                        page.writeStart("div", "class", "inputSmall");
                            page.writeStart("select",
                                    "name", FIELDS_PARAMETER,
                                    "multiple", "multiple");
                                for (ObjectField field : allFields) {
                                    if (field.as(ToolUi.class).isHidden()) {
                                        continue;
                                    }

                                    String fieldName = field.getInternalName();

                                    page.writeStart("option",
                                            "selected", fieldNames.contains(fieldName) ? "selected" : null,
                                            "value", fieldName);
                                        page.writeHtml(field.getDisplayName());
                                    page.writeEnd();
                                }
                            page.writeEnd();
                        page.writeEnd();
                    page.writeEnd();

                    page.writeStart("div", "class", "buttons");
                        page.writeStart("button", "class", "action action-search");
                            page.writeHtml("Search");
                        page.writeEnd();
                    page.writeEnd();
                page.writeEnd();

                page.writeStart("h2");
                    page.writeHtml("Result");
                page.writeEnd();

                if (result == null) {
                    page.writeStart("div", "class", "message message-error");
                        page.writeStart("p");
                            page.writeHtml("Not a valid query! ");
                            page.writeHtml(predicate);
                        page.writeEnd();
                    page.writeEnd();

                } else if (!result.hasPages()) {
                    page.writeStart("div", "class", "message message-warning");
                        page.writeStart("p");
                            page.writeHtml("No matching items!");
                        page.writeEnd();
                    page.writeEnd();

                } else {
                    page.writeStart("form",
                            "class", "searchAdvancedResult",
                            "method", "post",
                            "action", page.url(null));
                        page.writeElement("input", "type", "hidden", "name", TYPE_PARAMETER, "value", type != null ? type.getId() : null);
                        page.writeElement("input", "type", "hidden", "name", PREDICATE_PARAMETER, "value", predicate);
                        page.writeElement("input", "type", "hidden", "name", "returnUrl", "value", page.url(""));

                        for (ObjectField field : fields) {
                            page.writeElement("input", "type", "hidden", "name", FIELDS_PARAMETER, "value", field.getInternalName());
                        }

                        page.writeStart("ul", "class", "pagination");
                            if (result.hasPrevious()) {
                                page.writeStart("li", "class", "next");
                                    page.writeStart("a",
                                            "href", page.url("", "offset", result.getPreviousOffset()));
                                        page.writeHtml("Previous ");
                                        page.writeHtml(result.getLimit());
                                    page.writeEnd();
                                page.writeEnd();
                            }

                            if (result.getOffset() > 0 ||
                                    result.hasNext() ||
                                    result.getItems().size() > LIMITS[0]) {
                                page.writeStart("li");
                                    for (String fieldName : fieldNames) {
                                        page.writeElement("input", "type", "hidden", "name", FIELDS_PARAMETER, "value", fieldName);
                                    }

                                    page.writeStart("select",
                                            "data-bsp-autosubmit", "",
                                            "name", "limit");
                                        for (int l : LIMITS) {
                                            page.writeStart("option",
                                                    "value", l,
                                                    "selected", limit == l ? "selected" : null);
                                                page.writeHtml("Show ");
                                                page.writeHtml(l == Integer.MAX_VALUE ? "All" : l);
                                            page.writeEnd();
                                        }
                                    page.writeEnd();
                                page.writeEnd();
                            }

                            page.writeStart("li", "class", "label");
                                page.writeHtml(result.getFirstItemIndex());
                                page.writeHtml(" to ");
                                page.writeHtml(result.getLastItemIndex());
                                page.writeHtml(" of ");
                                page.writeStart("strong");
                                    page.writeHtml(result.getCount());
                                page.writeEnd();
                            page.writeEnd();

                            if (result.hasNext()) {
                                page.writeStart("li", "class", "next");
                                    page.writeStart("a",
                                            "href", page.url("", "offset", result.getNextOffset()));
                                        page.writeHtml("Next ");
                                        page.writeHtml(result.getLimit());
                                    page.writeEnd();
                                page.writeEnd();
                            }
                        page.writeEnd();

                        page.writeStart("table", "class", "table-bordered table-striped pageThumbnails");
                            page.writeStart("thead");
                                page.writeStart("tr");
                                    page.writeStart("th");
                                    page.writeEnd();

                                    page.writeStart("th");
                                        page.writeHtml("Type");
                                    page.writeEnd();

                                    page.writeStart("th");
                                        page.writeHtml("Label");
                                    page.writeEnd();

                                    for (ObjectField field : fields) {
                                        page.writeStart("th");
                                            page.writeHtml(field.getDisplayName());
                                        page.writeEnd();
                                    }
                                page.writeEnd();
                            page.writeEnd();

                            page.writeStart("tbody");
                                for (Object item : result.getItems()) {
                                    State itemState = State.getInstance(item);
                                    String permalink = itemState.as(Directory.ObjectModification.class).getPermalink();

                                    page.writeStart("tr", "data-preview-url", permalink);
                                        page.writeStart("td", "style", "width: 20px;");
                                            page.writeElement("input",
                                                    "type", "checkbox",
                                                    "name", ITEMS_PARAMETER,
                                                    "value", itemState.getId());
                                        page.writeEnd();

                                        page.writeStart("td");
                                            page.writeHtml(page.getTypeLabel(item));
                                        page.writeEnd();

                                        page.writeStart("td", "data-preview-anchor", "");
                                            page.writeStart("a",
                                                    "href", page.objectUrl("/content/edit.jsp", item));
                                                page.writeObjectLabel(item);
                                            page.writeEnd();
                                        page.writeEnd();

                                        for (ObjectField field : fields) {
                                            page.writeStart("td");
                                                if ("cms.directory.paths".equals(field.getInternalName())) {
                                                    for (Directory.Path p : itemState.as(Directory.ObjectModification.class).getPaths()) {
                                                        String path = p.getPath();

                                                        page.writeStart("div");
                                                            page.writeStart("a", "href", path, "target", "_blank");
                                                                page.writeHtml(path);
                                                            page.writeEnd();

                                                            page.writeHtml(" (");
                                                            page.writeHtml(p.getType());
                                                            page.writeHtml(")");
                                                        page.writeEnd();
                                                    }

                                                } else {
                                                    for (Iterator<Object> i = CollectionUtils.recursiveIterable(itemState.get(field.getInternalName())).iterator(); i.hasNext();) {
                                                        Object value = i.next();
                                                        page.writeObject(value);
                                                        if (i.hasNext()) {
                                                            page.writeHtml(", ");
                                                        }
View Full Code Here

    public void writeObjectLabel(Object object) throws IOException {
        if (object == null) {
            writeHtml("N/A");

        } else {
            State state = State.getInstance(object);
            String visibilityLabel = object instanceof Draft ? "Update" : state.getVisibilityLabel();
            String label = state.getLabel();

            if (!ObjectUtils.isBlank(visibilityLabel)) {
                writeStart("span", "class", "visibilityLabel");
                    writeHtml(visibilityLabel);
                writeEnd();

                writeHtml(" ");
            }

            writeHtml(ObjectUtils.isBlank(label) ?
                    state.getId() :
                    state.getLabel());
        }
    }
View Full Code Here

    public void writeTypeObjectLabel(Object object) throws IOException {
        if (object == null) {
            writeHtml("N/A");

        } else {
            State state = State.getInstance(object);
            ObjectType type = state.getType();
            String visibilityLabel = state.getVisibilityLabel();
            String label = state.getLabel();

            if (!ObjectUtils.isBlank(visibilityLabel)) {
                writeStart("span", "class", "visibilityLabel");
                    writeHtml(visibilityLabel);
                writeEnd();

                writeHtml(" ");
            }

            String typeLabel;

            if (type == null) {
                typeLabel = "Unknown Type";

            } else {
                typeLabel = type.getLabel();

                if (ObjectUtils.isBlank(typeLabel)) {
                    typeLabel = type.getId().toString();
                }
            }

            if (ObjectUtils.isBlank(label)) {
                label = state.getId().toString();
            }

            writeHtml(typeLabel);

            if (!typeLabel.equals(label)) {
View Full Code Here

                writeStart("option", "value", "");
                    writeHtml(placeholder);
                writeEnd();

                for (Object item : items) {
                    State itemState = State.getInstance(item);
                    writeStart("option",
                            "selected", item.equals(value) ? "selected" : null,
                            "value", itemState.getId());
                        writeObjectLabel(item);
                    writeEnd();
                }
            writeEnd();

        } else {
            State state = State.getInstance(value);
            StringBuilder typeIds = new StringBuilder();

            for (ObjectType type : field.getTypes()) {
                typeIds.append(type.getId());
                typeIds.append(',');
            }

            if (typeIds.length() > 0) {
                typeIds.setLength(typeIds.length() - 1);
            }

            writeElement("input",
                    "type", "text",
                    "class", "objectId",
                    "data-additional-query", field.getPredicate(),
                    "data-generic-argument-index", field.getGenericArgumentIndex(),
                    "data-dynamic-placeholder", ui.getPlaceholderDynamicText(),
                    "data-label", value != null ? getObjectLabel(value) : null,
                    "data-pathed", ToolUi.isOnlyPathed(field),
                    "data-preview", getPreviewThumbnailUrl(value),
                    "data-searcher-path", ui.getInputSearcherPath(),
                    "data-suggestions", ui.isEffectivelySuggestions(),
                    "data-typeIds", typeIds,
                    "data-visibility", value != null ? state.getVisibilityLabel() : null,
                    "value", value != null ? state.getId() : null,
                    "placeholder", placeholder,
                    attributes);
        }
    }
View Full Code Here

     * given {@code object}.
     *
     * @param attributes Extra attributes for the heading element.
     */
    public void writeFormHeading(Object object, Object... attributes) throws IOException {
        State state = State.getInstance(object);
        ObjectType type = state.getType();
        String typeLabel = getTypeLabel(object);
        String iconName = null;

        if (type != null) {
            iconName = type.as(ToolUi.class).getIconName();
        }

        if (ObjectUtils.isBlank(iconName)) {
            iconName = "object";
        }

        writeStart("h1",
                "class", "icon icon-" + iconName,
                attributes);
            if (state.isNew()) {
                writeHtml("New ");
                writeHtml(typeLabel);

            } else {
                writeHtml("Edit ");
View Full Code Here

     *
     * @param object Can't be {@code null}.
     * @return {@code true} if the message was written.
     */
    public boolean writeTrashMessage(Object object) throws IOException {
        State state = State.getInstance(object);
        Content.ObjectModification contentData = state.as(Content.ObjectModification.class);

        if (!contentData.isTrash()) {
            return false;
        }

View Full Code Here

     * @param object Can't be {@code null}.
     * @param displayTrashAction If {@code null}, displays the trash action
     * instead of the delete action.
     */
    public void writeStandardForm(Object object, boolean displayTrashAction) throws IOException, ServletException {
        State state = State.getInstance(object);
        ObjectType type = state.getType();

        writeFormHeading(object);

        writeStart("div", "class", "widgetControls");
            includeFromCms("/WEB-INF/objectVariation.jsp", "object", object);
        writeEnd();

        includeFromCms("/WEB-INF/objectMessage.jsp", "object", object);

        writeStart("form",
                "class", "standardForm",
                "method", "post",
                "enctype", "multipart/form-data",
                "action", url("", "id", state.getId()),
                "autocomplete", "off",
                "data-type", type != null ? type.getInternalName() : null);
            boolean trash = writeTrashMessage(object);

            writeFormFields(object);

            if (!trash) {
                writeStart("div", "class", "actions");
                    writeStart("button",
                            "class", "icon icon-action-save",
                            "name", "action-save",
                            "value", "true");
                        writeHtml("Save");
                    writeEnd();

                    if (!state.isNew() &&
                            (type == null ||
                            (!type.getGroups().contains(Singleton.class.getName()) &&
                            !type.getGroups().contains(Tool.class.getName())))) {
                        if (displayTrashAction) {
                            writeStart("button",
View Full Code Here

     */
    @SuppressWarnings("deprecation")
    public void updateUsingAllWidgets(Object object) throws Exception {
        ErrorUtils.errorIfNull(object, "object");

        State state = State.getInstance(object);
        List<String> requestWidgets = params(String.class, state.getId() + "/_widget");

        if (requestWidgets.isEmpty()) {
            return;
        }

View Full Code Here

                param(String.class, "action-delete") == null) {
            return false;
        }

        try {
            State state = State.getInstance(object);
            Draft draft = getOverlaidDraft(object);

            if (draft != null) {
                draft.delete();

                if (state.as(Content.ObjectModification.class).isDraft()) {
                    state.delete();
                }

                Schedule schedule = draft.getSchedule();

                if (schedule != null &&
                        ObjectUtils.isBlank(schedule.getName())) {
                    schedule.delete();
                }

            } else {
                state.delete();
            }

            redirectOnSave("");
            return true;
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.