Search in sources :

Example 6 with UnimplementedException

use of org.collectionspace.csp.api.persistence.UnimplementedException in project application by collectionspace.

the class RelateSearchList method search_or_list.

private void search_or_list(Storage storage, UIRequest request, String source, String target, String type) throws UIException {
    try {
        JSONObject restrictions = new JSONObject();
        addRestriction(restrictions, "src", source, true);
        addRestriction(restrictions, "dst", target, true);
        addRestriction(restrictions, "type", type, false);
        // XXX CSPACE-1834 need to support pagination
        JSONObject results = storage.getPathsJSON("relations/" + searchPath, restrictions);
        String[] relations = (String[]) results.get("listItems");
        JSONObject out = new JSONObject();
        JSONArray data = new JSONArray();
        if (searchPath.equals("main")) {
            for (String r : relations) data.put(r);
            out.put("items", data);
        } else {
            if (results.has("listItems")) {
                if (results.getJSONObject("moredata").length() > 0) {
                    // there is a relationship
                    String[] reld = (String[]) results.get("listItems");
                    String hcsid = reld[0];
                    JSONObject mored = results.getJSONObject("moredata").getJSONObject(hcsid);
                    // it's name is
                    JSONObject broaderthan = new JSONObject();
                    broaderthan.put("label", mored.getString("objectname"));
                    out.put("broader", broaderthan);
                }
            }
        }
        request.sendJSONResponse(out);
    } catch (JSONException x) {
        throw new UIException("Failed to parse json: ", x);
    } catch (ExistException x) {
        throw new UIException("Existence exception: ", x);
    } catch (UnimplementedException x) {
        throw new UIException("Unimplemented exception: ", x);
    } catch (UnderlyingStorageException x) {
        UIException uiexception = new UIException(x.getMessage(), x.getStatus(), x.getUrl(), x);
        request.sendJSONResponse(uiexception.getJSON());
    }
}
Also used : JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) UIException(org.collectionspace.csp.api.ui.UIException) ExistException(org.collectionspace.csp.api.persistence.ExistException) UnderlyingStorageException(org.collectionspace.csp.api.persistence.UnderlyingStorageException) UnimplementedException(org.collectionspace.csp.api.persistence.UnimplementedException)

Example 7 with UnimplementedException

use of org.collectionspace.csp.api.persistence.UnimplementedException in project application by collectionspace.

the class BlobRead method get_blob.

private void get_blob(Storage s, UIRequest q, String csid, String derivative) throws UIException {
    try {
        JSONObject out = s.retrieveJSON("/blobs/" + csid + "/" + derivative, null);
        byte[] data_array = (byte[]) out.get("getByteBody");
        String contentDisp = out.has("contentdisposition") ? out.getString("contentdisposition") : null;
        q.sendUnknown(data_array, out.getString("contenttype"), contentDisp);
        int cacheMaxAgeSeconds = adminData.getUploadedMediaCacheAge();
        if (cacheMaxAgeSeconds > 0) {
            q.setCacheMaxAgeSeconds(cacheMaxAgeSeconds);
        }
    } catch (ExistException e) {
        throw new UIException("Existence exception", e);
    } catch (UnimplementedException e) {
        throw new UIException("Unimplemented", e);
    } catch (UnderlyingStorageException e) {
        throw new UIException("Underlying storage problem", e);
    } catch (JSONException e) {
        throw new UIException("JSON exception", e);
    }
}
Also used : JSONObject(org.json.JSONObject) UIException(org.collectionspace.csp.api.ui.UIException) JSONException(org.json.JSONException) ExistException(org.collectionspace.csp.api.persistence.ExistException) UnderlyingStorageException(org.collectionspace.csp.api.persistence.UnderlyingStorageException) UnimplementedException(org.collectionspace.csp.api.persistence.UnimplementedException)

Example 8 with UnimplementedException

use of org.collectionspace.csp.api.persistence.UnimplementedException in project application by collectionspace.

the class RecordTraverser method store_get.

private void store_get(Storage storage, UIRequest request, String path) throws UIException {
    JSONObject outputJSON = new JSONObject();
    try {
        String[] bits = path.split("/");
        String token = bits[0];
        Integer indexvalue = Integer.valueOf(bits[1]);
        String key = UISession.SEARCHTRAVERSER + "" + token;
        if (request.getSession().getValue(key) instanceof JSONObject) {
            JSONObject alldata = (JSONObject) request.getSession().getValue(key);
            JSONObject pagination = new JSONObject();
            if (alldata.has("pagination")) {
                pagination = alldata.getJSONObject("pagination");
            }
            JSONArray data = alldata.getJSONArray("results");
            Integer pgSz = alldata.getInt("pageSize");
            Integer pageNm = alldata.getInt("pageNum");
            Integer total = alldata.getInt("total");
            Integer offset = pgSz * pageNm;
            Integer numInstances = alldata.getInt("numInstances");
            String base = alldata.getString("record");
            String instance = alldata.getString("instance");
            JSONObject restriction = alldata.getJSONObject("restriction");
            // only works 100% for records - auths is a problem...
            // multiplying by numInstance isn't quite enough...
            // Integer relativeindexvalue = indexvalue - offset ;
            Integer prevpageNm = 0;
            Integer prevval = indexvalue - 1;
            if (prevval >= 0 && prevval <= total) {
                JSONObject item = checkTraverserPageNum(storage, request, outputJSON, token, key, alldata, pagination, data, pgSz, pageNm, numInstances, base, instance, restriction, prevpageNm, prevval);
                outputJSON.put("previous", item);
            }
            Integer postpageNm = 0;
            Integer postval = indexvalue + 1;
            if (postval < total && postval >= 0) {
                JSONObject item = checkTraverserPageNum(storage, request, outputJSON, token, key, alldata, pagination, data, pgSz, pageNm, numInstances, base, instance, restriction, postpageNm, postval);
                outputJSON.put("next", item);
            }
            Integer currpageNm = 0;
            if (indexvalue < total && indexvalue >= 0) {
                JSONObject item = checkTraverserPageNum(storage, request, outputJSON, token, key, alldata, pagination, data, pgSz, pageNm, currpageNm, base, instance, restriction, prevpageNm, indexvalue);
                outputJSON.put("current", item);
            }
            outputJSON.put("index", indexvalue);
            outputJSON.put("token", token);
            outputJSON.put("total", total);
        } else {
            outputJSON.put("error", "Cannot find the traverser token");
        }
    } catch (JSONException e) {
        throw new UIException("Error with the traverser data", e);
    } catch (ExistException e) {
        throw new UIException("Error with the traverser data", e);
    } catch (UnimplementedException e) {
        throw new UIException("Error with the traverser data", e);
    } catch (UnderlyingStorageException x) {
        UIException uiexception = new UIException(x.getMessage(), x.getStatus(), x.getUrl(), x);
        request.sendJSONResponse(uiexception.getJSON());
    }
    request.sendJSONResponse(outputJSON);
}
Also used : JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) UIException(org.collectionspace.csp.api.ui.UIException) ExistException(org.collectionspace.csp.api.persistence.ExistException) UnderlyingStorageException(org.collectionspace.csp.api.persistence.UnderlyingStorageException) UnimplementedException(org.collectionspace.csp.api.persistence.UnimplementedException)

Example 9 with UnimplementedException

use of org.collectionspace.csp.api.persistence.UnimplementedException in project application by collectionspace.

the class WebAutoComplete method autocomplete.

private void autocomplete(CSPRequestCache cache, Storage storage, UIRequest request) throws UIException {
    try {
        String[] path = request.getPrincipalPath();
        // Last path element is the field on which user is querying.
        String fieldName = path[path.length - 1];
        JSONArray out = new JSONArray();
        boolean hasHierarchy = r.hasHierarchyUsed("screen");
        boolean isHierarchyAutoComplete = false;
        if (hasHierarchy) {
            // Configures the hierarchy section.
            Structure s = r.getStructure("screen");
            if (s.hasOption(fieldName)) {
                // This is one of the hierarchy fields
                isHierarchyAutoComplete = true;
            }
        }
        if (r.isType("authority") || !isHierarchyAutoComplete) {
            out = doAuthorityAutocomplete(cache, storage, fieldName, request.getRequestArgument(AUTO_COMPLETE_QUERY_PARAM), request.getRequestArgument(CONSTRAIN_VOCAB_PARAM), request.getRequestArgument(PAGE_SIZE_PARAM), request.getRequestArgument(PAGE_NUM_PARAM));
        } else if (isHierarchyAutoComplete) {
            out = doRecordAutocomplete(cache, storage, fieldName, request.getRequestArgument(AUTO_COMPLETE_QUERY_PARAM), request.getRequestArgument(PAGE_SIZE_PARAM), request.getRequestArgument(PAGE_NUM_PARAM));
        } else {
            throw new ConfigException("WebAutoComplete called for record that does not support autocomplete!: " + r.getID());
        }
        request.sendJSONResponse(out);
    } catch (JSONException e) {
        throw new UIException("JSONException during autocompletion", e);
    } catch (ExistException e) {
        throw new UIException("ExistException during autocompletion", e);
    } catch (UnimplementedException e) {
        throw new UIException("UnimplementedException during autocompletion", e);
    } catch (ConfigException e) {
        throw new UIException("ConfigException during autocompletion", e);
    } catch (UnderlyingStorageException x) {
        throw new UIException("UnderlyingStorageException during autocompletion" + x.getLocalizedMessage(), x.getStatus(), x.getUrl(), x);
    }
}
Also used : JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) UIException(org.collectionspace.csp.api.ui.UIException) ConfigException(org.collectionspace.chain.csp.config.ConfigException) Structure(org.collectionspace.chain.csp.schema.Structure) ExistException(org.collectionspace.csp.api.persistence.ExistException) UnderlyingStorageException(org.collectionspace.csp.api.persistence.UnderlyingStorageException) UnimplementedException(org.collectionspace.csp.api.persistence.UnimplementedException)

Example 10 with UnimplementedException

use of org.collectionspace.csp.api.persistence.UnimplementedException in project application by collectionspace.

the class WebLoginStatus method testlogin.

public void testlogin(Request in) throws UIException {
    UIRequest request = in.getUIRequest();
    try {
        Storage storage = in.getStorage();
        JSONObject output = new JSONObject();
        UISession uiSession = request.getSession();
        if (uiSession != null && uiSession.getValue(UISession.USERID) != null) {
            if (uiSession.getValue(UISession.USERID).equals("")) {
                output.put("login", false);
            } else {
                JSONObject perms = null;
                // See if there is a cache of the permissions for this user and tenant.
                String userId = (String) uiSession.getValue(UISession.USERID);
                String tenantId = (String) uiSession.getValue(UISession.TENANT);
                perms = findPermsInCache(userId, tenantId);
                boolean fFoundInCache;
                if (perms != null) {
                    fFoundInCache = true;
                } else {
                    fFoundInCache = false;
                    perms = getPermissions(storage);
                }
                if (perms.has("permissions")) {
                    // Will only slow down edge case of user with no roles.
                    if (!fFoundInCache) {
                        addPermsToCache(userId, tenantId, perms);
                    }
                    output.put("permissions", perms.getJSONObject("permissions"));
                    output.put("csid", perms.getString("csid"));
                    output.put("screenName", perms.getString("screenName"));
                    output.put("userId", perms.getString("userId"));
                    output.put("login", true);
                    int maxInterval = 0;
                    UIRequest uir = in.getUIRequest();
                    if (uir != null) {
                        HttpSession httpSession = request.getHttpSession();
                        if (httpSession != null) {
                            maxInterval = httpSession.getMaxInactiveInterval();
                        }
                    }
                    // Need to consider the shorter of session timeout and cookie expiry.
                    // cookie life is in minutes, so convert to seconds.
                    int cookieLife = 60 * spec.getAdminData().getCookieLife();
                    if (maxInterval == 0 || maxInterval >= cookieLife) {
                        maxInterval = cookieLife;
                    }
                    output.put("maxInactive", maxInterval);
                } else {
                    output.put("login", false);
                    output.put("message", "no roles associated with this user");
                }
            }
        } else {
            output.put("login", false);
        }
        request.sendJSONResponse(output);
    } catch (JSONException x) {
        throw new UIException("Failed to parse json: " + x.getMessage(), x);
    } catch (ExistException x) {
        // failed login test
        throw new UIException("Existence exception: ", x);
    } catch (UnimplementedException x) {
        throw new UIException("Unimplemented exception: ", x);
    } catch (UnderlyingStorageException x) {
        UIException uiexception = new UIException(x.getMessage(), x.getStatus(), x.getUrl(), x);
        request.sendJSONResponse(uiexception.getJSON());
    }
}
Also used : HttpSession(javax.servlet.http.HttpSession) JSONException(org.json.JSONException) ExistException(org.collectionspace.csp.api.persistence.ExistException) UnderlyingStorageException(org.collectionspace.csp.api.persistence.UnderlyingStorageException) UIRequest(org.collectionspace.csp.api.ui.UIRequest) Storage(org.collectionspace.csp.api.persistence.Storage) JSONObject(org.json.JSONObject) UISession(org.collectionspace.csp.api.ui.UISession) UIException(org.collectionspace.csp.api.ui.UIException) UnimplementedException(org.collectionspace.csp.api.persistence.UnimplementedException)

Aggregations

UnimplementedException (org.collectionspace.csp.api.persistence.UnimplementedException)56 UnderlyingStorageException (org.collectionspace.csp.api.persistence.UnderlyingStorageException)55 ExistException (org.collectionspace.csp.api.persistence.ExistException)50 JSONException (org.json.JSONException)50 JSONObject (org.json.JSONObject)48 UIException (org.collectionspace.csp.api.ui.UIException)40 JSONArray (org.json.JSONArray)25 Record (org.collectionspace.chain.csp.schema.Record)11 ConnectionException (org.collectionspace.chain.csp.persistence.services.connection.ConnectionException)10 IOException (java.io.IOException)7 ReturnedDocument (org.collectionspace.chain.csp.persistence.services.connection.ReturnedDocument)6 FieldSet (org.collectionspace.chain.csp.schema.FieldSet)6 ConfigException (org.collectionspace.chain.csp.config.ConfigException)5 ReturnedMultipartDocument (org.collectionspace.chain.csp.persistence.services.connection.ReturnedMultipartDocument)5 Field (org.collectionspace.chain.csp.schema.Field)5 Document (org.dom4j.Document)5 UnsupportedEncodingException (java.io.UnsupportedEncodingException)4 Group (org.collectionspace.chain.csp.schema.Group)4 Instance (org.collectionspace.chain.csp.schema.Instance)4 Storage (org.collectionspace.csp.api.persistence.Storage)4