package org.marketcetera.photon.preferences; import java.util.ArrayList; import java.util.List; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.marketcetera.photon.PhotonPlugin; public class FIXMessageColumnPreferenceParser { private static final String KeyPrefix = "org.marketcetera.photon.preferences.fixcolumnfields"; //$NON-NLS-1$ private static final String KeyDelimiter = "_"; //$NON-NLS-1$ private static final String FieldDelimiter = ","; //$NON-NLS-1$ public FIXMessageColumnPreferenceParser() { } private ScopedPreferenceStore getPreferenceStore() { return PhotonPlugin.getDefault().getPreferenceStore(); } private String getFullPrefix() { return KeyPrefix + KeyDelimiter ; } private String getKey(String viewID) { return getFullPrefix() + viewID; } public boolean isPreferenceForView(String preferenceName, String viewID) { String key = getKey(viewID); if(preferenceName != null && preferenceName.startsWith(key)) { return true; } return false; } private String toValue(List<Integer> fixFields) { StringBuilder builder = new StringBuilder(); for (int field : fixFields) { builder.append(field); builder.append(FieldDelimiter); } return builder.toString(); } private List<Integer> fromValue(String strValue) { List<Integer> fields = new ArrayList<Integer>(); if (strValue == null) { return fields; } String[] parts = strValue.split(FieldDelimiter); if (parts == null) { return fields; } for (String part : parts) { try { int field = Integer.parseInt(part); fields.add(field); } catch (Exception anyException) { PhotonPlugin.getMainConsoleLogger().debug(String.format("%s Failed to parse field value: %s", //$NON-NLS-1$ getClass(), part)); } } return fields; } public void setFieldsToShow(String viewID, List<Integer> fixFields) { String key = getKey(viewID); String value = toValue(fixFields); getPreferenceStore().setValue(key, value); } public List<Integer> getFieldsToShow(String viewID, ScopedPreferenceStore prefStore) { String key = getKey(viewID); String value = prefStore.getString(key); if( value == null) { return null; } List<Integer> fields = fromValue(value); return fields; } public List<Integer> getFieldsToShow(String viewID) { return getFieldsToShow(viewID, getPreferenceStore()); } }