package model.structure; import java.util.List; public class FieldReplacerData { /* * the fields */ public static final String TITLE = "title"; public static final String ARTIST = "artist"; public static final String ALBUMARTIST = "albumArtist"; public static final String ALBUM = "album"; public static final String YEAR = "year"; public static final String TRACK = "track"; public static final String MAXTRACKS = "maxTracks"; public static final String CD = "cd"; public static final String MAXCD = "maxCd"; public static final String GENRE = "genre"; public static final String COMMENT = "comment"; public static final String COMPOSER = "composer"; public static final String ORIGARTIST = "origArtist"; public static final String COPYRIGHT = "copyright"; public static final String URL = "url"; public static final String ENCODEDBY = "encoded"; public static final String LYRICS = "lyrics"; /** * array for all fields, if index is true, this field should be replaced */ private boolean[] checkedFields; /** * array for all process actions, if index is true, this process should be * operated */ private boolean[] checkedProcesses; /** * a list with all convert elements */ private List<ConvertElement> convertElements; /** * true if all selected, if this is true all loaded files will be changed, * if false just the selected once */ private boolean selectAll; /** * Constructor * * @param selectAll * true if all is selected * @param checkedFields * the checked fields * @param checkProcesses * the checked processes * @param convertElements * the convert Elements */ public FieldReplacerData(boolean selectAll, boolean[] checkedFields, boolean[] checkProcesses, List<ConvertElement> convertElements) { this.checkedFields = checkedFields; this.checkedProcesses = checkProcesses; this.convertElements = convertElements; this.selectAll = selectAll; } public boolean[] getCheckedFields() { return checkedFields; } public void setCheckedFields(boolean[] checkedFields) { this.checkedFields = checkedFields; } public boolean[] getCheckedProcesses() { return checkedProcesses; } public void setCheckedProcesses(boolean[] checkedProcesses) { this.checkedProcesses = checkedProcesses; } public List<ConvertElement> getConvertElements() { return convertElements; } public void setConvertElements(List<ConvertElement> convertElements) { this.convertElements = convertElements; } public boolean isSelectAll() { return selectAll; } public void setSelectAll(boolean selectAll) { this.selectAll = selectAll; } /** * changes the field with the given value if the field should be changed * * @param field * the field (see attributes for all fields) * @param value * the value which should be changed * * @return the unmodified value if the field shouldn't be changed, else the * modified value */ public String changeField(String field, String value) { if (field.equals(FieldReplacerData.TITLE) && !checkedFields[0]) return value; if (field.equals(FieldReplacerData.ARTIST) && !checkedFields[1]) return value; if (field.equals(FieldReplacerData.ALBUMARTIST) && !checkedFields[2]) return value; if (field.equals(FieldReplacerData.ALBUM) && !checkedFields[3]) return value; if (field.equals(FieldReplacerData.YEAR) && !checkedFields[4]) return value; if (field.equals(FieldReplacerData.TRACK) && !checkedFields[5]) return value; if (field.equals(FieldReplacerData.MAXTRACKS) && !checkedFields[6]) return value; if (field.equals(FieldReplacerData.CD) && !checkedFields[7]) return value; if (field.equals(FieldReplacerData.MAXCD) && !checkedFields[8]) return value; if (field.equals(FieldReplacerData.GENRE) && !checkedFields[9]) return value; if (field.equals(FieldReplacerData.COMMENT) && !checkedFields[10]) return value; if (field.equals(FieldReplacerData.COMPOSER) && !checkedFields[11]) return value; if (field.equals(FieldReplacerData.ORIGARTIST) && !checkedFields[12]) return value; if (field.equals(FieldReplacerData.COPYRIGHT) && !checkedFields[13]) return value; if (field.equals(FieldReplacerData.URL) && !checkedFields[14]) return value; if (field.equals(FieldReplacerData.ENCODEDBY) && !checkedFields[15]) return value; if (field.equals(FieldReplacerData.LYRICS) && !checkedFields[16]) return value; // ' ' to '_' if (checkedProcesses[0]) value = value.replace(" ", "_"); // '_' to ' ' else if (checkedProcesses[1]) value = value.replace("_", " "); // remove ' ' else if (checkedProcesses[2]) value = value.replace(" ", ""); // all uppercase if (checkedProcesses[3]) value = value.toUpperCase(); // all lowercase else if (checkedProcesses[4]) value = value.toLowerCase(); // first letter upper else if (checkedProcesses[5]) { // split at ' ' String newValue = ""; String[] tmp = value.split(" "); for (int i = 0; i < tmp.length; i++) newValue += makeFirstUppercase(tmp[i]) + " "; // tmp = newValue.trim().split("_"); // for (int i = 0; i < tmp.length; i++) // value += makeFirstUppercase(tmp[i]) + "_"; // value = value.substring(0, value.length() - 1); value = newValue.trim(); } // convert list if (checkedProcesses[6]) { for (ConvertElement ele : convertElements) value = value.replace(ele.getConvertFrom(), ele.getConvertTo()); } return value; } /** * makes the first letter for the given word to uppercase * * @param word * given word * * @return modified word */ private String makeFirstUppercase(String word) { if (word == null || word.length() == 0) return word; if (word.length() == 1) return word.toUpperCase(); return Character.toString(word.charAt(0)) + word.substring(1); } }