/** Parses the last word(s) from the name if it is a suffix. */ private void parseSuffix(Name name, NameTokenizer tokens) { if (tokens.mStartPointer == tokens.mEndPointer) { return; } String lastToken = tokens.mTokens[tokens.mEndPointer - 1]; // Take care of an explicit comma-separated suffix if (tokens.mEndPointer - tokens.mStartPointer > 2 && tokens.hasComma(tokens.mEndPointer - 2)) { if (tokens.hasDot(tokens.mEndPointer - 1)) { lastToken += '.'; } name.suffix = lastToken; tokens.mEndPointer--; return; } if (lastToken.length() > mMaxSuffixLength) { return; } String normalized = lastToken.toUpperCase(); if (mSuffixesSet.contains(normalized)) { name.suffix = lastToken; tokens.mEndPointer--; return; } if (tokens.hasDot(tokens.mEndPointer - 1)) { lastToken += '.'; } normalized += "."; // Take care of suffixes like M.D. and D.D.S. int pos = tokens.mEndPointer - 1; while (normalized.length() <= mMaxSuffixLength) { if (mSuffixesSet.contains(normalized)) { name.suffix = lastToken; tokens.mEndPointer = pos; return; } if (pos == tokens.mStartPointer) { break; } pos--; if (tokens.hasDot(pos)) { lastToken = tokens.mTokens[pos] + "." + lastToken; } else { lastToken = tokens.mTokens[pos] + " " + lastToken; } normalized = tokens.mTokens[pos].toUpperCase() + "." + normalized; } }
public static Name getCommonName(Nation n) { List<Unit> primaryMages = new ArrayList<Unit>(); for (Unit u : n.generateComList()) if (u.tags.contains("schoolmage 3")) { primaryMages.add(u); } List<Unit> secondaryMages = new ArrayList<Unit>(); for (Unit u : n.generateComList()) if (u.tags.contains("schoolmage 2")) { secondaryMages.add(u); } List<Unit> tertiaryMages = new ArrayList<Unit>(); for (Unit u : n.generateComList()) if (u.tags.contains("schoolmage 1")) { tertiaryMages.add(u); } List<Unit> compensationMages = new ArrayList<Unit>(); for (Unit u : n.generateComList()) if (u.tags.contains("extranmage")) { compensationMages.add(u); } Name common = new Name(); if (primaryMages.size() > 0) { common = primaryMages.get(0).name.getCopy(); for (Unit u : primaryMages) { if (u.name.prefix == null || !u.name.prefix.equals(common.prefix)) common.prefix = null; if (u.name.type == null || !u.name.type.equals(common.type)) common.setType("mage"); if (u.name.suffixprefix == null || !u.name.suffixprefix.equals(common.suffixprefix)) common.suffixprefix = null; if (u.name.suffix == null || !u.name.suffix.equals(common.suffix)) common.suffix = null; } if (common.suffix == null && common.suffixprefix != null) common.suffixprefix = null; if (primaryMages.size() > 1) return common; for (Unit u : secondaryMages) { if (u.name.prefix == null || !u.name.prefix.equals(common.prefix)) common.prefix = null; if (u.name.type == null || !u.name.type.equals(common.type)) common.setType("mage"); if (u.name.suffixprefix == null || !u.name.suffixprefix.equals(common.suffixprefix)) common.suffixprefix = null; if (u.name.suffix == null || !u.name.suffix.equals(common.suffix)) common.suffix = null; } for (Unit u : tertiaryMages) { if (u.name.prefix == null || !u.name.prefix.equals(common.prefix)) common.prefix = null; if (u.name.type == null || !u.name.type.equals(common.type)) common.setType("mage"); if (u.name.suffixprefix == null || !u.name.suffixprefix.equals(common.suffixprefix)) common.suffixprefix = null; if (u.name.suffix == null || !u.name.suffix.equals(common.suffix)) common.suffix = null; } } if (common.suffix == null && common.suffixprefix != null) common.suffixprefix = null; return common; }
/** Import a class name. Subsequent imports override earlier ones */ public void importClass(String name) { if (importedClasses == null) importedClasses = new HashMap<String, String>(); importedClasses.put(Name.suffix(name, 1), name); nameSpaceChanged(); }