/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingspectator.csvtotransactions; import java.io.IOException; import java.io.Writer; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * * @author Mohsen Vakilian * */ public class TransactionPatterns { private int nextIdentifier; private Map<Integer, TransactionPattern> identifierToTransactionPattern; private String itemColumnName; public TransactionPatterns(String itemColumnName) { this.itemColumnName= itemColumnName; this.nextIdentifier= 1; this.identifierToTransactionPattern= new HashMap<Integer, TransactionPattern>(); } public int findTransactionPattern(Set<String> items) { for (TransactionPattern transactionPattern : identifierToTransactionPattern.values()) { if (transactionPattern.getItems().equals(items)) { return transactionPattern.getIdentifier(); } } return -1; } public int addTransactionPattern(Set<String> items) { int identifier= nextIdentifier; identifierToTransactionPattern.put(identifier, new TransactionPattern(identifier, items)); ++nextIdentifier; return identifier; } public void writeTo(Writer transactionPatternsWriter) { try { transactionPatternsWriter.write(String.format("%s,%s\n", TransactionPattern.TRANSACTION_PATTERN_IDENTIFIER_COLUMN_NAME, itemColumnName)); for (int i= 1; i <= identifierToTransactionPattern.size(); ++i) { TransactionPattern transactionPattern= identifierToTransactionPattern.get(i); for (String item : transactionPattern.getOrderedItems()) { transactionPatternsWriter.write(String.format("%s,%s\n", transactionPattern.getIdentifier(), item)); } } } catch (IOException e) { throw new RuntimeException(e); } } }