Search in sources :

Example 1 with RecordSearchList

use of org.collectionspace.chain.csp.webui.record.RecordSearchList in project application by collectionspace.

the class WebUI method configure_finish.

private void configure_finish(Spec spec) {
    final String MEDIA_RECORD_ID = "media";
    for (Operation op : Operation.values()) tries.put(op, new Trie());
    // Operation.CREATE/UPDATE = method= POST
    // Operation.READ = method= GET
    addMethod(Operation.READ, new String[] { "login" }, 0, new WebLogin(this, spec));
    addMethod(Operation.CREATE, new String[] { "login" }, 0, new WebLogin(this, spec));
    addMethod(Operation.CREATE, new String[] { "uploads" }, 0, new BlobCreateUpdate(spec.getRecord("blobs"), true));
    addMethod(Operation.READ, new String[] { "uploads" }, 0, new BlobCreateUpdate(spec.getRecord("blobs"), true));
    addMethod(Operation.READ, new String[] { "download" }, 1, new BlobRead());
    addMethod(Operation.READ, new String[] { "logout" }, 0, new WebLogout());
    addMethod(Operation.READ, new String[] { "loginstatus" }, 0, new WebLoginStatus(spec));
    addMethod(Operation.READ, new String[] { "authorities", "initialise" }, 0, new WebReset(false, false));
    addMethod(Operation.READ, new String[] { "reset" }, 0, new WebReset(false, true));
    addMethod(Operation.READ, new String[] { "quick-reset" }, 0, new WebReset(true, true));
    // addMethod(Operation.READ,new String[]{find_page,"uispec"},0,new
    // FindEditUISpec(spec.getAllRecords()));//removed as I don't think
    // anyone uses it
    addMethod(Operation.CREATE, new String[] { "passwordreset" }, 0, new UserDetailsReset(false, spec));
    addMethod(Operation.CREATE, new String[] { "resetpassword" }, 0, new UserDetailsReset(true, spec));
    addMethod(Operation.READ, new String[] { "adjacentRecords" }, 2, new RecordTraverser(spec));
    addMethod(Operation.READ, new String[] { "parseDate" }, 0, new StructuredDateParser());
    for (Schemas s : spec.getAllSchemas()) {
        addMethod(Operation.READ, new String[] { s.getWebURL(), "uischema" }, 0, new UISchema(spec, s));
    }
    addMethod(Operation.READ, new String[] { "generator" }, 0, new DataGenerator(spec));
    Record mediaR = spec.getRecord(MEDIA_RECORD_ID);
    if (mediaR == null) {
        log.error("No media record configured!!!");
    }
    for (Record r : spec.getAllRecords()) {
        addMethod(Operation.READ, new String[] { r.getWebURL(), "generator" }, 0, new DataGenerator(r, "screen"));
        addMethod(Operation.READ, new String[] { r.getWebURL(), "serviceschema" }, 0, new ServicesXsd(r, "common"));
        addMethod(Operation.READ, new String[] { r.getWebURL(), "uischema" }, 0, new UISchema(r, "screen"));
        addMethod(Operation.READ, new String[] { r.getTabURL(), "uischema" }, 0, new UISchema(r, "tab"));
        addMethod(Operation.READ, new String[] { r.getSearchURL(), "uischema" }, 0, new UISchema(r, "search"));
        addMethod(Operation.READ, new String[] { r.getWebURL(), "uispec" }, 0, new UISpec(r, "screen"));
        addMethod(Operation.READ, new String[] { r.getTabURL(), "uispec" }, 0, new UISpec(r, "tab"));
        addMethod(Operation.READ, new String[] { r.getSearchURL(), "uispec" }, 0, new UISpec(r, "search"));
        addMethod(Operation.READ, new String[] { r.getWebURL(), "termList" }, 1, new WebTermList(r));
        if (r.isType("authority")) {
            // urls like record urls to make life easier for the UI
            // CSPACE-1139
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 0, new AuthoritiesVocabulariesSearchList(r, false));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(r, true));
            addMethod(Operation.CREATE, new String[] { r.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(r, true));
            addMethod(Operation.READ, new String[] { "authorities", r.getWebURL() }, 0, new AuthoritiesVocabulariesSearchList(r, false));
            addMethod(Operation.READ, new String[] { "authorities", r.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(r, true));
            addMethod(Operation.CREATE, new String[] { "authorities", r.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(r, true));
            addMethod(Operation.CREATE, new String[] { "authorities", r.getWebURL() }, 0, new VocabulariesCreateUpdate(r, true));
            addMethod(Operation.READ, new String[] { "authorities", r.getWebURL(), "initialize" }, 0, new AuthoritiesVocabulariesInitialize(r, true));
            addMethod(Operation.READ, new String[] { "authorities", r.getWebURL(), "refresh" }, 0, new AuthoritiesVocabulariesInitialize(r, false));
            // We'll search on media related to the CSID tail.
            if (mediaR != null) {
                addMethod(Operation.READ, new String[] { r.getWebURL(), mediaR.getWebURL() }, 1, new RecordSearchList(mediaR, RecordSearchList.MODE_SEARCH_RELATED));
            }
            for (Instance n : r.getAllInstances()) {
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL() }, 0, new AuthoritiesVocabulariesSearchList(n, false));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(n, true));
                addMethod(Operation.CREATE, new String[] { "vocabularies", n.getWebURL(), "search" }, 0, new AuthoritiesVocabulariesSearchList(n, true));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "initialize" }, 0, new AuthoritiesVocabulariesInitialize(n, true, true));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "refresh" }, 0, new AuthoritiesVocabulariesInitialize(n, false, true));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL() }, 1, new VocabulariesRead(n, VocabulariesRead.GET_FULL_INFO));
                addMethod(Operation.READ, new String[] { "vocabularies", "basic", n.getWebURL() }, 1, new VocabulariesRead(n, VocabulariesRead.GET_BASIC_INFO));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "authorities" }, 1, new VocabulariesRead(n, VocabulariesRead.GET_TERMS_USED_INFO));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "refobjs" }, 1, new VocabulariesRead(n, VocabulariesRead.GET_REF_OBJS_INFO));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "autocomplete" }, 0, new WebAutoComplete(spec.getRecord(r.getID())));
                addMethod(Operation.CREATE, new String[] { "vocabularies", n.getWebURL() }, 0, new VocabulariesCreateUpdate(n, true));
                addMethod(Operation.UPDATE, new String[] { "vocabularies", n.getWebURL() }, 1, new VocabulariesCreateUpdate(n, false));
                addMethod(Operation.DELETE, new String[] { "vocabularies", n.getWebURL() }, 0, new VocabulariesDelete(n));
                addMethod(Operation.UPDATE, new String[] { "vocabularies", n.getWebURL(), "workflow" }, 2, new VocabulariesWorkflowTransition(n));
                addMethod(Operation.READ, new String[] { "vocabularies", n.getWebURL(), "source-vocab" }, 1, new VocabRedirector(r));
            }
        } else if (r.isType("record") || r.isType("blob") || r.isType("authorizationdata")) {
            addMethod(Operation.READ, new String[] { r.getWebURL(), "__auto" }, 0, new WebAuto());
            addMethod(Operation.READ, new String[] { r.getWebURL(), "autocomplete" }, 0, new WebAutoComplete(spec.getRecord(r.getID())));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "search" }, 0, new RecordSearchList(r, RecordSearchList.MODE_SEARCH));
            addMethod(Operation.CREATE, new String[] { r.getWebURL(), "search" }, 0, new RecordSearchList(r, RecordSearchList.MODE_SEARCH));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 0, new RecordSearchList(r, RecordSearchList.MODE_LIST));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 1, new RecordRead(r));
            addMethod(Operation.READ, new String[] { "basic", r.getWebURL() }, 1, new RecordRead(r, true));
            addMethod(Operation.DELETE, new String[] { r.getWebURL() }, 1, new RecordDelete(r.getID()));
            addMethod(Operation.CREATE, new String[] { r.getWebURL() }, 0, new RecordCreateUpdate(r, true));
            addMethod(Operation.UPDATE, new String[] { r.getWebURL() }, 1, new RecordCreateUpdate(r, false));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "source-vocab" }, 1, new VocabRedirector(r));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "authorities" }, 1, new RecordAuthorities(r));
            // relatable records.
            if ((r.isType("procedure") && !r.isType("vocabulary")) || "collection-object".equals(r.getID())) {
                for (Record r2 : spec.getAllRecords()) {
                    if ((r2.isType("procedure") && !r2.isType("vocabulary")) || "collection-object".equals(r2.getID())) {
                        // We do not actually care about the type of r, but
                        // rather just the CSID tail.
                        // We'll search on r2's related to the CSID tail.
                        addMethod(Operation.READ, new String[] { r.getWebURL(), r2.getWebURL() }, 1, new RecordSearchList(r2, RecordSearchList.MODE_SEARCH_RELATED));
                    } else if (r2.isType("searchall")) {
                        // Allow to ask for all procedures related to this
                        // record. Use SearchAll with a related search.
                        addMethod(Operation.READ, new String[] { r.getWebURL(), "procedures" }, 1, new RecordSearchList(r2, RecordSearchList.MODE_SEARCH_RELATED, "procedure"));
                    }
                }
            }
        } else if (r.isType("userdata")) {
            addMethod(Operation.READ, new String[] { r.getWebURL(), "search" }, 0, new UserDetailsSearchList(r, true));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 1, new UserDetailsRead(r));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 0, new UserDetailsSearchList(r, false));
            addMethod(Operation.DELETE, new String[] { r.getWebURL() }, 1, new UserDetailsDelete(r.getID()));
            addMethod(Operation.CREATE, new String[] { r.getWebURL() }, 0, new UserDetailsCreateUpdate(r, true));
            addMethod(Operation.UPDATE, new String[] { r.getWebURL() }, 1, new UserDetailsCreateUpdate(r, false));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 3, new UserRolesRead(spec.getRecordByWebUrl("userrole")));
            addMethod(Operation.CREATE, new String[] { r.getWebURL() }, 2, new UserRolesCreate(spec.getRecordByWebUrl("userrole")));
            addMethod(Operation.DELETE, new String[] { r.getWebURL() }, 3, new UserRolesDelete(spec.getRecordByWebUrl("userrole").getID()));
        } else if (r.isType("id")) {
            // XXX this isn't right but it does work. NEEDS to have it's own
            // methods rather than piggy backing on RECORD
            addMethod(Operation.READ, new String[] { r.getWebURL(), "__auto" }, 0, new WebAuto());
            addMethod(Operation.READ, new String[] { r.getWebURL(), "autocomplete" }, 0, new WebAutoComplete(spec.getRecord(r.getID())));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "search" }, 0, new RecordSearchList(r, RecordSearchList.MODE_SEARCH));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 0, new RecordSearchList(r, RecordSearchList.MODE_LIST));
            addMethod(Operation.READ, new String[] { r.getWebURL() }, 1, new RecordRead(r));
            addMethod(Operation.DELETE, new String[] { r.getWebURL() }, 1, new RecordDelete(r.getID()));
            addMethod(Operation.CREATE, new String[] { r.getWebURL() }, 0, new RecordCreateUpdate(r, true));
            addMethod(Operation.UPDATE, new String[] { r.getWebURL() }, 1, new RecordCreateUpdate(r, false));
            addMethod(Operation.READ, new String[] { r.getWebURL(), "source-vocab" }, 1, new VocabRedirector(r));
        } else if (r.isType("searchall")) {
            addMethod(Operation.READ, new String[] { r.getWebURL(), "search" }, 0, new RecordSearchList(r, RecordSearchList.MODE_SEARCH));
        }
    }
    addMethod(Operation.CREATE, new String[] { "relationships" }, 0, new RelateCreateUpdate(true));
    addMethod(Operation.UPDATE, new String[] { "relationships" }, 1, new RelateCreateUpdate(false));
    addMethod(Operation.READ, new String[] { "relationships" }, 1, new RelateRead());
    addMethod(Operation.READ, new String[] { "relationships", "hierarchical" }, 1, new RelateRead("hierarchical"));
    addMethod(Operation.DELETE, new String[] { "relationships" }, 1, new RelateDelete(false));
    addMethod(Operation.DELETE, new String[] { "relationships", "one-way" }, 1, new RelateDelete(true));
    addMethod(Operation.READ, new String[] { "relationships", "search" }, 0, new RelateSearchList(true));
    addMethod(Operation.READ, new String[] { "relationships", "hierarchical", "search" }, 0, new RelateSearchList(true, "hierarchical"));
    addMethod(Operation.READ, new String[] { "relationships", "hierarchical" }, 0, new RelateSearchList(false, "hierarchical"));
    addMethod(Operation.READ, new String[] { "relationships" }, 0, new RelateSearchList(false));
}
Also used : RecordAuthorities(org.collectionspace.chain.csp.webui.record.RecordAuthorities) UserDetailsDelete(org.collectionspace.chain.csp.webui.userdetails.UserDetailsDelete) VocabulariesDelete(org.collectionspace.chain.csp.webui.authorities.VocabulariesDelete) Instance(org.collectionspace.chain.csp.schema.Instance) UserDetailsRead(org.collectionspace.chain.csp.webui.userdetails.UserDetailsRead) RelateRead(org.collectionspace.chain.csp.webui.relate.RelateRead) RecordDelete(org.collectionspace.chain.csp.webui.record.RecordDelete) UserRolesRead(org.collectionspace.chain.csp.webui.userroles.UserRolesRead) Operation(org.collectionspace.csp.api.ui.Operation) RecordCreateUpdate(org.collectionspace.chain.csp.webui.record.RecordCreateUpdate) RelateSearchList(org.collectionspace.chain.csp.webui.relate.RelateSearchList) UserRolesDelete(org.collectionspace.chain.csp.webui.userroles.UserRolesDelete) RecordTraverser(org.collectionspace.chain.csp.webui.misc.RecordTraverser) VocabulariesCreateUpdate(org.collectionspace.chain.csp.webui.authorities.VocabulariesCreateUpdate) BlobRead(org.collectionspace.chain.csp.webui.mediablob.BlobRead) UISpec(org.collectionspace.chain.csp.webui.nuispec.UISpec) WebAuto(org.collectionspace.chain.csp.webui.misc.WebAuto) Record(org.collectionspace.chain.csp.schema.Record) AuthoritiesVocabulariesSearchList(org.collectionspace.chain.csp.webui.authorities.AuthoritiesVocabulariesSearchList) Trie(org.collectionspace.chain.pathtrie.Trie) UserDetailsReset(org.collectionspace.chain.csp.webui.userdetails.UserDetailsReset) VocabulariesRead(org.collectionspace.chain.csp.webui.authorities.VocabulariesRead) UserRolesCreate(org.collectionspace.chain.csp.webui.userroles.UserRolesCreate) RelateCreateUpdate(org.collectionspace.chain.csp.webui.relate.RelateCreateUpdate) StructuredDateParser(org.collectionspace.chain.csp.webui.misc.StructuredDateParser) UISchema(org.collectionspace.chain.csp.webui.nuispec.UISchema) WebLogout(org.collectionspace.chain.csp.webui.misc.WebLogout) WebLogin(org.collectionspace.chain.csp.webui.misc.WebLogin) Schemas(org.collectionspace.chain.csp.schema.Schemas) AuthoritiesVocabulariesInitialize(org.collectionspace.chain.csp.webui.authorities.AuthoritiesVocabulariesInitialize) ServicesXsd(org.collectionspace.chain.csp.webui.nuispec.ServicesXsd) RelateDelete(org.collectionspace.chain.csp.webui.relate.RelateDelete) WebAutoComplete(org.collectionspace.chain.csp.webui.misc.WebAutoComplete) WebReset(org.collectionspace.chain.csp.webui.misc.WebReset) RecordSearchList(org.collectionspace.chain.csp.webui.record.RecordSearchList) VocabRedirector(org.collectionspace.chain.csp.webui.misc.VocabRedirector) UserDetailsCreateUpdate(org.collectionspace.chain.csp.webui.userdetails.UserDetailsCreateUpdate) UserDetailsSearchList(org.collectionspace.chain.csp.webui.userdetails.UserDetailsSearchList) WebLoginStatus(org.collectionspace.chain.csp.webui.misc.WebLoginStatus) DataGenerator(org.collectionspace.chain.csp.webui.nuispec.DataGenerator) WebTermList(org.collectionspace.chain.csp.webui.misc.WebTermList) RecordRead(org.collectionspace.chain.csp.webui.record.RecordRead) BlobCreateUpdate(org.collectionspace.chain.csp.webui.mediablob.BlobCreateUpdate) VocabulariesWorkflowTransition(org.collectionspace.chain.csp.webui.authorities.VocabulariesWorkflowTransition)

Example 2 with RecordSearchList

use of org.collectionspace.chain.csp.webui.record.RecordSearchList in project application by collectionspace.

the class RecordTraverser method subTraverser.

private JSONObject subTraverser(Storage storage, UIRequest request, String key, Integer numInstances, String base, String instance, JSONObject restriction) throws JSONException, UIException, ExistException, UnimplementedException, UnderlyingStorageException {
    JSONObject results = new JSONObject();
    Record myr = this.spec.getRecord(base);
    if (myr.isType("record") || myr.isType("searchall")) {
        this.searcher = new RecordSearchList(myr, RecordSearchList.MODE_SEARCH);
        // Need to set up maps for recordtype.
        this.searcher.configure(this.spec);
        results = this.searcher.getJSON(storage, restriction, key, base);
    } else if (myr.isType("authority")) {
        if (myr.hasInstance(instance)) {
            Instance myn = myr.getInstance(instance);
            this.avsearcher = new AuthoritiesVocabulariesSearchList(myn, true);
        } else {
            this.avsearcher = new AuthoritiesVocabulariesSearchList(myr, true);
        }
        if (this.avsearcher != null) {
            results = this.avsearcher.getJSON(storage, restriction, key);
        }
    }
    // cache for record traverser
    if (results.has("pagination") && results.getJSONObject("pagination").has("separatelists")) {
        GenericSearch.createTraverser(request, base, instance, results, restriction, key, numInstances);
    }
    return results;
}
Also used : RecordSearchList(org.collectionspace.chain.csp.webui.record.RecordSearchList) JSONObject(org.json.JSONObject) Instance(org.collectionspace.chain.csp.schema.Instance) Record(org.collectionspace.chain.csp.schema.Record) AuthoritiesVocabulariesSearchList(org.collectionspace.chain.csp.webui.authorities.AuthoritiesVocabulariesSearchList)

Aggregations

Instance (org.collectionspace.chain.csp.schema.Instance)2 Record (org.collectionspace.chain.csp.schema.Record)2 AuthoritiesVocabulariesSearchList (org.collectionspace.chain.csp.webui.authorities.AuthoritiesVocabulariesSearchList)2 RecordSearchList (org.collectionspace.chain.csp.webui.record.RecordSearchList)2 Schemas (org.collectionspace.chain.csp.schema.Schemas)1 AuthoritiesVocabulariesInitialize (org.collectionspace.chain.csp.webui.authorities.AuthoritiesVocabulariesInitialize)1 VocabulariesCreateUpdate (org.collectionspace.chain.csp.webui.authorities.VocabulariesCreateUpdate)1 VocabulariesDelete (org.collectionspace.chain.csp.webui.authorities.VocabulariesDelete)1 VocabulariesRead (org.collectionspace.chain.csp.webui.authorities.VocabulariesRead)1 VocabulariesWorkflowTransition (org.collectionspace.chain.csp.webui.authorities.VocabulariesWorkflowTransition)1 BlobCreateUpdate (org.collectionspace.chain.csp.webui.mediablob.BlobCreateUpdate)1 BlobRead (org.collectionspace.chain.csp.webui.mediablob.BlobRead)1 RecordTraverser (org.collectionspace.chain.csp.webui.misc.RecordTraverser)1 StructuredDateParser (org.collectionspace.chain.csp.webui.misc.StructuredDateParser)1 VocabRedirector (org.collectionspace.chain.csp.webui.misc.VocabRedirector)1 WebAuto (org.collectionspace.chain.csp.webui.misc.WebAuto)1 WebAutoComplete (org.collectionspace.chain.csp.webui.misc.WebAutoComplete)1 WebLogin (org.collectionspace.chain.csp.webui.misc.WebLogin)1 WebLoginStatus (org.collectionspace.chain.csp.webui.misc.WebLoginStatus)1 WebLogout (org.collectionspace.chain.csp.webui.misc.WebLogout)1