Package com.psddev.dari.db

Examples of com.psddev.dari.db.ObjectType


     *
     * @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";
        }
View Full Code Here


     * @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",
                                    "class", "icon icon-action-trash action-pullRight link",
                                    "name", "action-trash",
                                    "value", "true");
View Full Code Here

    }

    @Override
    protected void doService(final ToolPageContext page) throws IOException, ServletException {
        DatabaseEnvironment environment = Database.Static.getDefault().getEnvironment();
        ObjectType type = environment.getTypeById(page.param(UUID.class, TYPE_PARAMETER));
        String predicate = page.param(String.class, PREDICATE_PARAMETER);
        List<ObjectField> allFields = new ArrayList<ObjectField>();

        for (String fieldName : new String[] {
                "cms.content.publishDate",
                "cms.content.publishUser",
                "cms.content.updateDate",
                "cms.content.updateUser",
                "cms.directory.paths" }) {
            allFields.add(environment.getField(fieldName));
        }

        if (type != null) {
            allFields.addAll(type.getFields());
        }

        List<String> fieldNames = page.params(String.class, FIELDS_PARAMETER);
        List<ObjectField> fields = new ArrayList<ObjectField>();

        for (ObjectField field : allFields) {
            if (fieldNames.contains(field.getInternalName())) {
                fields.add(field);
            }
        }

        Collections.sort(allFields);
        Collections.sort(fields);

        List<UUID> ids = page.params(UUID.class, ITEMS_PARAMETER);
        Query<Object> query = (type != null ?
                Query.fromType(type) :
                Query.fromGroup(Content.SEARCHABLE_GROUP)).
                where(predicate);

        if (page.param(String.class, "action-download") != null) {
            HttpServletResponse response = page.getResponse();

            response.setContentType("text/csv");
            response.setHeader("Content-Disposition", "attachment; filename=search-result-" + new DateTime(null, page.getUserDateTimeZone()).toString("yyyy-MM-dd-hh-mm-ss") + ".csv");

            page.putOverride(Recordable.class, new HtmlFormatter<Recordable>() {
                @Override
                public void format(HtmlWriter writer, Recordable object) throws IOException {
                    ToolPageContext page = (ToolPageContext) writer;
                    writer.write(page.getObjectLabel(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(StorageItem.class, new HtmlFormatter<StorageItem>() {
                @Override
                public void format(HtmlWriter writer, StorageItem item) throws IOException {
                    writer.write(item.getPublicUrl());
                }
            });

            page.write('\ufeff');

            page.write("\"");
            writeCsvItem(page, "Type");
            page.write("\",\"");
            writeCsvItem(page, "Label");
            page.write("\"");

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

            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());
View Full Code Here

            // items show up too.
            if (!mainState.isVisible() || Static.isPreview(request)) {
                mainState.setResolveInvisible(true);
            }

            ObjectType mainType = mainState.getType();
            Page page = Static.getPage(request);

            if (page == null &&
                    mainType != null &&
                    !ObjectUtils.isBlank(mainType.as(Renderer.TypeModification.class).getPath())) {
                page = Application.Static.getInstance(CmsTool.class).getModulePreviewTemplate();
            }

            // SEO and <head>.
            Map<String, Object> seo = new HashMap<String, Object>();
            Seo.ObjectModification seoData = mainState.as(Seo.ObjectModification.class);
            String seoTitle = seoData.findTitle();
            String seoDescription = seoData.findDescription();
            String seoRobots = seoData.findRobotsString();
            Set<String> seoKeywords = seoData.findKeywords();
            String seoKeywordsString = null;

            request.setAttribute("seo", seo);
            seo.put("title", seoTitle);
            seo.put("description", seoDescription);
            seo.put("robots", seoRobots);

            if (seoKeywords != null) {
                seoKeywordsString = seoKeywords.toString();

                seo.put("keywords", seoKeywords);
                seo.put("keywordsString", seoKeywordsString);
            }

            PageStage stage = new PageStage(getServletContext(), request);

            request.setAttribute("stage", stage);
            stage.setMetaProperty("og:type", mainType.as(Seo.TypeModification.class).getOpenGraphType());

            if (mainType != null &&
                    !ObjectUtils.isBlank(mainType.as(Renderer.TypeModification.class).getEmbedPath())) {
                stage.findOrCreateHeadElement("link",
                        "rel", "alternate",
                        "type", "application/json+oembed").
                        getAttributes().
                        put("href", JspUtils.getAbsoluteUrl(request, "",
                                "_embed", true,
                                "_format", "oembed"));
            }

            stage.setTitle(seoTitle);
            stage.setDescription(seoDescription);
            stage.setMetaName("robots", seoRobots);
            stage.setMetaName("keywords", seoKeywordsString);
            stage.update(mainObject);

            // Try to set the right content type based on the extension.
            String contentType = URLConnection.getFileNameMap().getContentTypeFor(servletPath);
            response.setContentType((ObjectUtils.isBlank(contentType) ? "text/html" : contentType) + ";charset=UTF-8");

            // Disable Webkit's XSS Auditor since it often interferes with
            // how preview works.
            if (Static.isPreview(request)) {
                response.setHeader("X-XSS-Protection", "0");
            }

            // Render the page.
            if (Static.isInlineEditingAllContents(request)) {
                response = new LazyWriterResponse(request, response);
            }

            writer = new HtmlWriter(response.getWriter());

            ((HtmlWriter) writer).putAllStandardDefaults();

            request.setAttribute("sections", new PullThroughCache<String, Section>() {
                @Override
                protected Section produce(String name) {
                    return Query.from(Section.class).where("internalName = ?", name).first();
                }
            });

            beginPage(request, response, writer, page);

            if (!response.isCommitted()) {
                request.getSession();
            }

            String context = request.getParameter("_context");
            boolean contextNotBlank = !ObjectUtils.isBlank(context);
            boolean embed = ObjectUtils.coalesce(
                    ObjectUtils.to(Boolean.class, request.getParameter("_embed")),
                    contextNotBlank);

            String layoutPath = findLayoutPath(mainObject, embed);

            if (page != null && ObjectUtils.isBlank(layoutPath)) {
                layoutPath = findLayoutPath(page, embed);

                if (!embed && ObjectUtils.isBlank(layoutPath)) {
                    layoutPath = page.getRendererPath();
                }
            }

            if (ObjectUtils.isBlank(layoutPath) &&
                    Static.isPreview(request)) {
                layoutPath = findLayoutPath(mainObject, true);
            }

            String typePath = mainType.as(Renderer.TypeModification.class).getPath();
            boolean rendered = false;

            try {
                if (contextNotBlank) {
                    ContextTag.Static.pushContext(request, context);
View Full Code Here

            ((LazyWriterResponse) response).getLazyWriter().writePending();
        }
    }

    private String findLayoutPath(Object object, boolean embed) {
        ObjectType type = State.getInstance(object).getType();

        if (type != null) {
            Renderer.TypeModification rendererData = type.as(Renderer.TypeModification.class);

            return embed ? rendererData.getEmbedPath() : rendererData.getLayoutPath();

        } else {
            return null;
View Full Code Here

            getRenderedObjects(request).add(object);

            // Engine not specified on section so fall back to the one
            // specified in the object type definition.
            if (ObjectUtils.isBlank(script)) {
                ObjectType type = State.getInstance(object).getType();
                if (type != null) {
                    Renderer.TypeModification typeRenderer = type.as(Renderer.TypeModification.class);
                    engine = typeRenderer.getEngine();
                    script = typeRenderer.findContextualPath(request);
                }
            }
        }

        LazyWriter lazyWriter;

        if (Static.isInlineEditingAllContents(request)) {
            lazyWriter = new LazyWriter(request, writer);
            writer = lazyWriter;

        } else {
            lazyWriter = null;
        }

        try {
            if (object != null) {
                Static.pushObject(request, object);
            }

            if (lazyWriter != null) {
                Map<String, String> map = new HashMap<String, String>();
                Object concrete = Static.peekConcreteObject(request);
                StringBuilder marker = new StringBuilder();

                if (section != null) {
                    map.put("sectionName", section.getName());
                    map.put("sectionId", section.getId().toString());
                }

                if (concrete != null) {
                    State state = State.getInstance(concrete);
                    ObjectType stateType = state.getType();

                    map.put("id", state.getId().toString());

                    if (stateType != null) {
                        map.put("typeLabel", stateType.getLabel());
                    }

                    try {
                        map.put("label", state.getLabel());
View Full Code Here

    @Override
    protected void doService(ToolPageContext page) throws IOException, ServletException {
        List<ObjectType> types = new ArrayList<ObjectType>(Database.Static.getDefault().getEnvironment().getTypes());
        UUID selectedId = page.param(UUID.class, "typeId");
        ObjectType selected = null;
        ContentType sct = null;

        for (ObjectType t : types) {
            if (t.getId().equals(selectedId)) {
                selected = t;
                break;
            }
        }

        if (selected != null) {
            sct = Query.from(ContentType.class).where("internalName = ?", selected.getInternalName()).first();

            if (page.isFormPost()) {
                if (sct == null) {
                    sct = new ContentType();
                    sct.getState().setId(page.param(UUID.class, "id"));
                }

                if (page.tryStandardUpdate(sct)) {
                    return;
                }

            } else if (sct == null) {
                sct = new ContentType();

                sct.setDisplayName(selected.getDisplayName());
                sct.setInternalName(selected.getInternalName());
            }

            for (ObjectField of : selected.getFields()) {
                ToolUi ui = of.as(ToolUi.class);

                if (!ui.isHidden()) {
                    boolean found = false;
                    for (ContentField cf : sct.getFields()) {
                        if (of.getInternalName().equals(cf.getInternalName())) {
                            found = true;
                            break;
                        }
                    }

                    if (!found) {
                        ContentField cf = new ContentField();

                        cf.setTab(ui.getTab());
                        cf.setDisplayName(of.getDisplayName());
                        cf.setInternalName(of.getInternalName());
                        sct.getFields().add(cf);
                    }
                }
            }

            for (Iterator<ContentField> i = sct.getFields().iterator(); i.hasNext();) {
                ContentField cf = i.next();
                boolean found = false;

                for (ObjectField of : selected.getFields()) {
                    if (of.getInternalName().equals(cf.getInternalName())) {
                        found = true;
                        break;
                    }
                }
View Full Code Here

    public SearchResultRenderer(ToolPageContext page, Search search) throws IOException {
        this.page = page;
        this.writer = page.getWriter();
        this.search = search;

        ObjectType selectedType = search.getSelectedType();
        ToolUi ui = selectedType == null ? null : selectedType.as(ToolUi.class);
        PaginatedResult<?> result = null;

        if (selectedType != null) {
            if (search.getSort() != null) {
                AuthenticationFilter.Static.putUserSetting(page.getRequest(), SORT_SETTING_PREFIX + selectedType.getId(), search.getSort());

            } else {
                Object sortSetting = AuthenticationFilter.Static.getUserSetting(page.getRequest(), SORT_SETTING_PREFIX + selectedType.getId());

                if (!ObjectUtils.isBlank(sortSetting)) {
                    search.setSort(sortSetting.toString());
                }
            }
        }

        if (search.getSort() == null) {
            search.setShowMissing(true);

            if (ui != null && ui.getDefaultSortField() != null) {
                search.setSort(ui.getDefaultSortField());

            } else if (!ObjectUtils.isBlank(search.getQueryString())) {
                search.setSort(Search.RELEVANT_SORT_VALUE);

            } else {
                Map<String, String> f = search.getFieldFilters().get("cms.content.publishDate");

                if (f != null &&
                        (f.get("") != null ||
                        f.get("x") != null)) {
                    search.setSort("cms.content.publishDate");

                } else {
                    search.setSort("cms.content.updateDate");
                }
            }
        }

        showSiteLabel = Query.from(CmsTool.class).first().isDisplaySiteInSearchResult() &&
                page.getSite() == null &&
                Query.from(Site.class).hasMoreThan(0);

        if (selectedType != null) {
            this.sortField = selectedType.getFieldGlobally(search.getSort());
            this.showTypeLabel = selectedType.as(ToolUi.class).findDisplayTypes().size() != 1;

            if (ObjectType.getInstance(ObjectType.class).equals(selectedType)) {
                List<ObjectType> types = new ArrayList<ObjectType>();
                Predicate predicate = search.toQuery(page.getSite()).getPredicate();
View Full Code Here

    }

    public void generateFieldDescriptionList() {
        // Create an entry for each field
        ObjectType type = getDocumentedType();
        if (type != null) {
            List<ObjectField> fields = type.getFields();
            for (ObjectField field : fields) {
                getFieldDescription(field.getInternalName(), field.getDisplayName(), true);
            }
            // Now identify any potentially out of date fields
            if (this.getFieldDescriptions() != null && !this.getFieldDescriptions().isEmpty()) {
                for (GuideField fieldDescription : this.getFieldDescriptions()) {
                    if (fieldDescription.getFieldName() != null && !fieldDescription.getFieldName().isEmpty()) {
                        if (type.getField(fieldDescription.getFieldName()) == null) {
                            fieldDescription.setDisplayName(fieldDescription.getFieldName() + " - INTERNAL FIELDNAME NO LONGER FOUND IN OBJECT TYPE. EVALUATE FOR CONTENT TRANSFER/REMOVAL.");
                        }
                    }
                }
            }
View Full Code Here

        if (level == 1) {
            page.writeStart("h2").writeHtml("Result").writeEnd();
        }

        // check if the Taxon UI should be displayed
        ObjectType taxonType = null;
        if (ObjectUtils.isBlank(search.getQueryString()) &&
                search.getVisibilities().isEmpty()) {

            if (search.getSelectedType() != null) {

                if (search.getSelectedType().getGroups().contains(Taxon.class.getName())) {
                    taxonType = search.getSelectedType();
                }

            } else if (search.getTypes() != null && search.getTypes().size() == 1) {

                ObjectType searchType = search.getTypes().iterator().next();

                if (searchType.getGroups().contains(Taxon.class.getName())) {
                    taxonType = searchType;
                }
            }
        }
View Full Code Here

TOP

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

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.