/* * 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. * * Contributions from 2013-2017 where performed either by US government * employees, or under US Veterans Health Administration contracts. * * US Veterans Health Administration contributions by government employees * are work of the U.S. Government and are not subject to copyright * protection in the United States. Portions contributed by government * employees are USGovWork (17USC ยง105). Not subject to copyright. * * Contribution by contractors to the US Veterans Health Administration * during this period are contractually contributed under the * Apache License, Version 2.0. * * See: https://www.usa.gov/government-works * * Contributions prior to 2013: * * Copyright (C) International Health Terminology Standards Development Organisation. * Licensed under the Apache License, Version 2.0. * */ package sh.isaac.model.configuration; //~--- JDK imports ------------------------------------------------------------ import java.util.Locale; //~--- non-JDK imports -------------------------------------------------------- import sh.isaac.api.Get; import sh.isaac.api.bootstrap.TermAux; import sh.isaac.api.coordinate.LanguageCoordinate; import sh.isaac.model.coordinate.LanguageCoordinateImpl; //~--- classes ---------------------------------------------------------------- /** * The Class LanguageCoordinates. * * @author kec */ public class LanguageCoordinates { /** * Case significance to concept sequence. * * @param initialCaseSignificant the initial case significant * @return the int */ public static int caseSignificanceToConceptSequence(boolean initialCaseSignificant) { return TermAux.caseSignificanceToConceptSequence(initialCaseSignificant); } /** * Concept id to case significance. * * @param id the id * @return true, if successful */ public static boolean conceptIdToCaseSignificance(int id) { return TermAux.conceptIdToCaseSignificance(id); } /** * Concept nid to iso 639. * * @param nid the nid * @return the string */ public static String conceptNidToIso639(int nid) { if (nid >= 0) { nid = Get.identifierService() .getConceptNid(nid); } if (TermAux.ENGLISH_LANGUAGE.getNid() == nid) { return "en"; } if (TermAux.SPANISH_LANGUAGE.getNid() == nid) { return "es"; } if (TermAux.FRENCH_LANGUAGE.getNid() == nid) { return "fr"; } if (TermAux.DANISH_LANGUAGE.getNid() == nid) { return "da"; } if (TermAux.POLISH_LANGUAGE.getNid() == nid) { return "pl"; } if (TermAux.DUTCH_LANGUAGE.getNid() == nid) { return "nl"; } if (TermAux.LITHUANIAN_LANGUAGE.getNid() == nid) { return "lt"; } if (TermAux.CHINESE_LANGUAGE.getNid() == nid) { return "zh"; } if (TermAux.JAPANESE_LANGUAGE.getNid() == nid) { return "ja"; } if (TermAux.SWEDISH_LANGUAGE.getNid() == nid) { return "sv"; } throw new UnsupportedOperationException("Can't handle: " + nid); } /** * Iso 639 to concept nid. * * @param iso639text the iso 639 text * @return the int */ public static int iso639toConceptNid(String iso639text) { switch (iso639text.toLowerCase(Locale.ENGLISH)) { case "en": return Get.identifierService() .getNidForUuids(TermAux.ENGLISH_LANGUAGE.getUuids()); case "es": return Get.identifierService() .getNidForUuids(TermAux.SPANISH_LANGUAGE.getUuids()); case "fr": return Get.identifierService() .getNidForUuids(TermAux.FRENCH_LANGUAGE.getUuids()); case "da": return Get.identifierService() .getNidForUuids(TermAux.DANISH_LANGUAGE.getUuids()); case "pl": return Get.identifierService() .getNidForUuids(TermAux.POLISH_LANGUAGE.getUuids()); case "nl": return Get.identifierService() .getNidForUuids(TermAux.DUTCH_LANGUAGE.getUuids()); case "lt": return Get.identifierService() .getNidForUuids(TermAux.LITHUANIAN_LANGUAGE.getUuids()); case "zh": return Get.identifierService() .getNidForUuids(TermAux.CHINESE_LANGUAGE.getUuids()); case "ja": return Get.identifierService() .getNidForUuids(TermAux.JAPANESE_LANGUAGE.getUuids()); case "sv": return Get.identifierService() .getNidForUuids(TermAux.SWEDISH_LANGUAGE.getUuids()); default: throw new UnsupportedOperationException("Can't handle: " + iso639text); } } /** * Iso 639 to concept sequence. * * @param iso639text the iso 639 text * @return the int */ public static int iso639toConceptSequence(String iso639text) { switch (iso639text.toLowerCase(Locale.ENGLISH)) { case "en": return Get.identifierService() .getConceptSequenceForUuids(TermAux.ENGLISH_LANGUAGE.getUuids()); case "es": return Get.identifierService() .getConceptSequenceForUuids(TermAux.SPANISH_LANGUAGE.getUuids()); case "fr": return Get.identifierService() .getConceptSequenceForUuids(TermAux.FRENCH_LANGUAGE.getUuids()); case "da": return Get.identifierService() .getConceptSequenceForUuids(TermAux.DANISH_LANGUAGE.getUuids()); case "pl": return Get.identifierService() .getConceptSequenceForUuids(TermAux.POLISH_LANGUAGE.getUuids()); case "nl": return Get.identifierService() .getConceptSequenceForUuids(TermAux.DUTCH_LANGUAGE.getUuids()); case "lt": return Get.identifierService() .getConceptSequenceForUuids(TermAux.LITHUANIAN_LANGUAGE.getUuids()); case "zh": return Get.identifierService() .getConceptSequenceForUuids(TermAux.CHINESE_LANGUAGE.getUuids()); case "ja": return Get.identifierService() .getConceptSequenceForUuids(TermAux.JAPANESE_LANGUAGE.getUuids()); case "sv": return Get.identifierService() .getConceptSequenceForUuids(TermAux.SWEDISH_LANGUAGE.getUuids()); default: throw new UnsupportedOperationException("Can't handle: " + iso639text); } } //~--- get methods --------------------------------------------------------- /** * Gets the gb english language fully specified name coordinate. * * @return the gb english language fully specified name coordinate */ public static LanguageCoordinate getGbEnglishLanguageFullySpecifiedNameCoordinate() { final int languageSequence = TermAux.ENGLISH_LANGUAGE.getConceptSequence(); final int[] dialectAssemblagePreferenceList = new int[] { TermAux.GB_DIALECT_ASSEMBLAGE.getConceptSequence(), TermAux.US_DIALECT_ASSEMBLAGE.getConceptSequence() }; final int[] descriptionTypePreferenceList = new int[] { TermAux.FULLY_SPECIFIED_DESCRIPTION_TYPE.getConceptSequence(), TermAux.SYNONYM_DESCRIPTION_TYPE.getConceptSequence() }; return new LanguageCoordinateImpl(languageSequence, dialectAssemblagePreferenceList, descriptionTypePreferenceList); } /** * Gets the gb english language preferred term coordinate. * * @return the gb english language preferred term coordinate */ public static LanguageCoordinate getGbEnglishLanguagePreferredTermCoordinate() { final int languageSequence = TermAux.ENGLISH_LANGUAGE.getConceptSequence(); final int[] dialectAssemblagePreferenceList = new int[] { TermAux.GB_DIALECT_ASSEMBLAGE.getConceptSequence(), TermAux.US_DIALECT_ASSEMBLAGE.getConceptSequence() }; final int[] descriptionTypePreferenceList = new int[] { TermAux.SYNONYM_DESCRIPTION_TYPE.getConceptSequence(), TermAux.FULLY_SPECIFIED_DESCRIPTION_TYPE.getConceptSequence() }; return new LanguageCoordinateImpl(languageSequence, dialectAssemblagePreferenceList, descriptionTypePreferenceList); } /** * Gets the us english language fully specified name coordinate. * * @return the us english language fully specified name coordinate */ public static LanguageCoordinate getUsEnglishLanguageFullySpecifiedNameCoordinate() { final int languageSequence = TermAux.ENGLISH_LANGUAGE.getConceptSequence(); final int[] dialectAssemblagePreferenceList = new int[] { TermAux.US_DIALECT_ASSEMBLAGE.getConceptSequence(), TermAux.GB_DIALECT_ASSEMBLAGE.getConceptSequence() }; final int[] descriptionTypePreferenceList = new int[] { TermAux.FULLY_SPECIFIED_DESCRIPTION_TYPE.getConceptSequence(), TermAux.SYNONYM_DESCRIPTION_TYPE.getConceptSequence() }; return new LanguageCoordinateImpl(languageSequence, dialectAssemblagePreferenceList, descriptionTypePreferenceList); } /** * Gets the us english language preferred term coordinate. * * @return the us english language preferred term coordinate */ public static LanguageCoordinate getUsEnglishLanguagePreferredTermCoordinate() { final int languageSequence = TermAux.ENGLISH_LANGUAGE.getConceptSequence(); final int[] dialectAssemblagePreferenceList = new int[] { TermAux.US_DIALECT_ASSEMBLAGE.getConceptSequence(), TermAux.GB_DIALECT_ASSEMBLAGE.getConceptSequence() }; final int[] descriptionTypePreferenceList = new int[] { TermAux.SYNONYM_DESCRIPTION_TYPE.getConceptSequence(), TermAux.FULLY_SPECIFIED_DESCRIPTION_TYPE.getConceptSequence() }; return new LanguageCoordinateImpl(languageSequence, dialectAssemblagePreferenceList, descriptionTypePreferenceList); } }