package pt.rupeal.invoicexpress.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import pt.rupeal.invoicexpress.enums.DocumentStatusEnum; /** * @author dneves * * The Status Graphs class is an auxiliary class to help us on an update status document. * */ public class StatusGraphs { public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> cashInvoiceGraph; public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> receiptGraph; public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> creditNoteGraph; public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> debitNoteGraph; public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> invoiceGraph; public final Map<DocumentStatusEnum, List<DocumentStatusEnum>> simplifiedInvoiceGraph; public StatusGraphs() { cashInvoiceGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); List<DocumentStatusEnum> canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); cashInvoiceGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); List<DocumentStatusEnum> draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.SETTLED); draftPossibleStatus.add(DocumentStatusEnum.DELETED); cashInvoiceGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); List<DocumentStatusEnum> finalPossibleStatus = new ArrayList<DocumentStatusEnum>(2); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SETTLED); cashInvoiceGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); List<DocumentStatusEnum> secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(0); cashInvoiceGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); List<DocumentStatusEnum> settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); cashInvoiceGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); receiptGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); receiptGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.FINAL); draftPossibleStatus.add(DocumentStatusEnum.DELETED); receiptGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); finalPossibleStatus = new ArrayList<DocumentStatusEnum>(2); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SECOND_COPY); receiptGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(1); secondCopyPossibleStatus.add(DocumentStatusEnum.CANCELED); receiptGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); settledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); receiptGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); creditNoteGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); creditNoteGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.FINAL); draftPossibleStatus.add(DocumentStatusEnum.DELETED); creditNoteGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); finalPossibleStatus = new ArrayList<DocumentStatusEnum>(3); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SECOND_COPY); finalPossibleStatus.add(DocumentStatusEnum.SETTLED); creditNoteGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(2); secondCopyPossibleStatus.add(DocumentStatusEnum.CANCELED); secondCopyPossibleStatus.add(DocumentStatusEnum.SETTLED); creditNoteGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); creditNoteGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); debitNoteGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); debitNoteGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.FINAL); draftPossibleStatus.add(DocumentStatusEnum.DELETED); debitNoteGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); finalPossibleStatus = new ArrayList<DocumentStatusEnum>(3); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SECOND_COPY); finalPossibleStatus.add(DocumentStatusEnum.SETTLED); debitNoteGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(2); secondCopyPossibleStatus.add(DocumentStatusEnum.CANCELED); secondCopyPossibleStatus.add(DocumentStatusEnum.SETTLED); debitNoteGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); debitNoteGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); invoiceGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); invoiceGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.FINAL); draftPossibleStatus.add(DocumentStatusEnum.DELETED); invoiceGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); finalPossibleStatus = new ArrayList<DocumentStatusEnum>(3); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SECOND_COPY); finalPossibleStatus.add(DocumentStatusEnum.SETTLED); invoiceGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(2); secondCopyPossibleStatus.add(DocumentStatusEnum.CANCELED); secondCopyPossibleStatus.add(DocumentStatusEnum.SETTLED); invoiceGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); invoiceGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); simplifiedInvoiceGraph = new HashMap<DocumentStatusEnum, List<DocumentStatusEnum>>(5); canceledPossibleStatus = new ArrayList<DocumentStatusEnum>(0); simplifiedInvoiceGraph.put(DocumentStatusEnum.CANCELED, canceledPossibleStatus); draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); draftPossibleStatus.add(DocumentStatusEnum.FINAL); draftPossibleStatus.add(DocumentStatusEnum.DELETED); simplifiedInvoiceGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); finalPossibleStatus = new ArrayList<DocumentStatusEnum>(3); finalPossibleStatus.add(DocumentStatusEnum.CANCELED); finalPossibleStatus.add(DocumentStatusEnum.SECOND_COPY); finalPossibleStatus.add(DocumentStatusEnum.SETTLED); simplifiedInvoiceGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(2); secondCopyPossibleStatus.add(DocumentStatusEnum.CANCELED); secondCopyPossibleStatus.add(DocumentStatusEnum.SETTLED); simplifiedInvoiceGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); simplifiedInvoiceGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); // draftPossibleStatus = new ArrayList<DocumentStatusEnum>(2); // draftPossibleStatus.add(DocumentStatusEnum.SETTLED); // draftPossibleStatus.add(DocumentStatusEnum.DELETED); // simplifiedInvoiceGraph.put(DocumentStatusEnum.DRAFT, draftPossibleStatus); // // finalPossibleStatus = new ArrayList<DocumentStatusEnum>(2); // finalPossibleStatus.add(DocumentStatusEnum.CANCELED); // finalPossibleStatus.add(DocumentStatusEnum.SETTLED); // simplifiedInvoiceGraph.put(DocumentStatusEnum.FINAL, finalPossibleStatus); // // secondCopyPossibleStatus = new ArrayList<DocumentStatusEnum>(0); // simplifiedInvoiceGraph.put(DocumentStatusEnum.SECOND_COPY, secondCopyPossibleStatus); // // settledPossibleStatus = new ArrayList<DocumentStatusEnum>(1); // settledPossibleStatus.add(DocumentStatusEnum.UNSETTLED); // simplifiedInvoiceGraph.put(DocumentStatusEnum.SETTLED, settledPossibleStatus); } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getCashInvoiceGraph() { return cashInvoiceGraph; } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getReceiptGraph() { return receiptGraph; } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getCreditNoteGraph() { return creditNoteGraph; } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getDebitNoteGraph() { return debitNoteGraph; } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getInvoiceGraph() { return invoiceGraph; } public Map<DocumentStatusEnum, List<DocumentStatusEnum>> getSimplifiedInvoiceGraph() { return simplifiedInvoiceGraph; } }