LipidCategory.java
/*
* Copyright 2021 Dominik Kopczynski, Nils Hoffmann.
*
* 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.lifstools.jgoslin.domain;
import java.util.Arrays;
import java.util.List;
/**
* The lipid category nomenclature follows the shorthand notation of
* <pre>Liebisch, G., Vizcaíno,
* J.A., Köfeler, H., Trötzmüller, M., Griffiths, W.J., Schmitz, G., Spener, F.,
* and Wakelam, M.J.O. (2013). Shorthand notation for lipid structures derived
* from mass spectrometry. J. Lipid Res. 54, 1523–1530.</pre>
*
* We use the associations to either LIPID MAPS categories where appropriate.
*
* @author Dominik Kopczynski
* @author Nils Hoffmann
*/
public enum LipidCategory {
NO_CATEGORY("Unknown lipid category"),
UNDEFINED("Undefined lipid category"),
/* SLM:000117142 Glycerolipids */
GL("Glycerolipids"),
/* SLM:000001193 Glycerophospholipids */
GP("Glycerophospholipids"),
/* SLM:000000525 Sphingolipids */
SP("Sphingolipids"),
/* SLM:000500463 Steroids and derivatives */
ST("Sterollipids"),
/* SLM:000390054 Fatty acyls and derivatives */
FA("Fattyacyls"),
/* LipidMAPS [PK]*/
PK("Polyketides"),
/* LipidMAPS [SL]*/
SL("Saccharolipids");
private final String fullName;
private LipidCategory(String fullName) {
this.fullName = fullName;
}
public String getFullName() {
return this.fullName;
}
public static LipidCategory forFullName(String fullName) {
List<LipidCategory> matches = Arrays.asList(LipidCategory.values()).stream().filter((t) -> {
return t.getFullName().equalsIgnoreCase(fullName);
}).toList();
if (matches.isEmpty()) {
return LipidCategory.UNDEFINED;
} else if (matches.size() > 1) {
throw new ConstraintViolationException("Query string " + fullName + " found more than once in enum values! Please check enum definition: fullName is compared case insensitive!");
}
return matches.get(0);
}
}