/* * Copyright 2015-2016 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.opencb.opencga.catalog.exceptions; import org.apache.commons.lang3.StringUtils; /** * Created by imedina on 11/09/14. */ public class CatalogDBException extends CatalogException { public CatalogDBException(String msg) { super(msg); } public CatalogDBException(Throwable cause) { super(cause); } public CatalogDBException(String message, Throwable cause) { super(message, cause); } public static CatalogDBException newInstance(String message, Object... arguments) { for (Object argument : arguments) { message = StringUtils.replace(message, "{}", String.valueOf(argument), 1); } return new CatalogDBException(message); } public static CatalogDBException idNotFound(String name, String id) { return new CatalogDBException(name + " { id: \"" + id + "\" } not found."); } public static CatalogDBException idNotFound(String name, long id) { return new CatalogDBException(name + " { id: " + id + " } not found."); } public static CatalogDBException alreadyExists(String name, String key, String value) { return generalAlreadyExists(name, -1, key, value, null); } public static CatalogDBException alreadyExists(String name, String key, String value, Exception e) { return generalAlreadyExists(name, -1, key, value, e); } public static CatalogDBException alreadyExists(String name, long fromStudyId, String key, String value) { return generalAlreadyExists(name, fromStudyId, key, value, null); } public static CatalogDBException alreadyExists(String name, long fromStudyId, String key, String value, Exception e) { return generalAlreadyExists(name, fromStudyId, key, value, e); } public static CatalogDBException alreadyExists(String name, long id) { return generalAlreadyExists(name, -1, "id", id, null); } public static CatalogDBException alreadyExists(String name, long id, Exception e) { return generalAlreadyExists(name, -1, "id", id, e); } private static CatalogDBException generalAlreadyExists(String name, long fromStudyId, String key, Object value, Exception e) { StringBuilder sb = new StringBuilder(name); sb.append(" { ").append(key).append(" : "); if (value == null) { sb.append("null"); } else if (value instanceof Number) { sb.append(value); } else { sb.append("\"").append(value.toString()).append("\""); } sb.append(" }"); if (fromStudyId >= 0) { sb.append(" from study { id : ").append(fromStudyId).append(" }"); } sb.append(" already exists."); if (e == null) { return new CatalogDBException(sb.toString()); } else { return new CatalogDBException(sb.toString(), e); } } public static CatalogDBException updateError(String name, long id) { return new CatalogDBException(name + " { id: " + id + " } could not be updated."); } public static CatalogDBException deleteError(String name) { return new CatalogDBException(name + ": It has been impossible to delete the object(s) from the database."); } public static CatalogDBException removeError(String name) { return new CatalogDBException(name + ": It has been impossible to remove the object(s) from the database."); } public static CatalogDBException alreadyDeletedOrRemoved(String name) { return new CatalogDBException(name + ": The object(s) were already marked as deleted or removed."); } public static CatalogDBException queryNotFound(String name) { return new CatalogDBException(name + ": The query used to delete did not report any result."); } public static CatalogDBException queryParamNotFound(String name, String resource) { return new CatalogDBException("The query param " + name + " does not exist for searching over " + resource + "."); } public static CatalogDBException fileInUse(long id, long count) { return new CatalogDBException("The file { id: " + id + "} cannot be removed as it is being used as input in " + count + " job(s)."); } public static CatalogDBException sampleIdIsParentOfOtherIndividual(long id) { return new CatalogDBException("The sample { id: " + id + "} cannot be removed as it is already the parent of other individual(s)."); } }