protected void init(Instances structure) { List<SortRule> sortRules = new ArrayList<SortRule>(); if (m_sortDetails != null && m_sortDetails.length() > 0) { String[] sortParts = m_sortDetails.split("@@sort-rule@@"); for (String s : sortParts) { SortRule r = new SortRule(s.trim()); r.init(m_env, structure); sortRules.add(r); } m_sortComparator = new SortComparator(sortRules); } // check for string attributes m_stringAttIndexes = new HashMap<String, Integer>(); for (int i = 0; i < structure.numAttributes(); i++) { if (structure.attribute(i).isString()) { m_stringAttIndexes.put(structure.attribute(i).name(), new Integer(i)); } } if (m_stringAttIndexes.size() == 0) { m_stringAttIndexes = null; } }
@Override public int compare(InstanceHolder o1, InstanceHolder o2) { int cmp = 0; for (SortRule sr : m_sortRules) { cmp = sr.compare(o1, o2); if (cmp != 0) { return cmp; } } return 0; }