package eu.doppel_helix.netbeans.mantisintegration; import eu.doppel_helix.netbeans.mantisintegration.issue.MantisIssue; import eu.doppel_helix.netbeans.mantisintegration.issue.MantisIssueProvider; import eu.doppel_helix.netbeans.mantisintegration.issue.MantisScheduleProvider; import eu.doppel_helix.netbeans.mantisintegration.issue.MantisStatusProvider; import eu.doppel_helix.netbeans.mantisintegration.query.MantisQuery; import eu.doppel_helix.netbeans.mantisintegration.query.MantisQueryProvider; import eu.doppel_helix.netbeans.mantisintegration.repository.MantisRepository; import eu.doppel_helix.netbeans.mantisintegration.repository.MantisRepositoryProvider; import java.awt.Color; import java.math.BigInteger; import java.util.HashMap; import java.util.Map; import org.netbeans.modules.bugtracking.spi.BugtrackingSupport; public class Mantis { private static Mantis instance; private HashMap<BigInteger, Color> statusColorMap; private MantisRepositoryProvider mrp; private MantisQueryProvider mqp; private MantisIssueProvider mip; private MantisScheduleProvider msp; private MantisStatusProvider statusProvider; private BugtrackingSupport<MantisRepository, MantisQuery, MantisIssue> bf; private Mantis() {} public static synchronized Mantis getInstance() { if(instance == null) { instance = new Mantis(); } return instance; } public MantisIssueProvider getIssueProvider() { if(mip == null) { mip = new MantisIssueProvider(); } return mip; } public MantisQueryProvider getQueryProvider() { if(mqp == null) { mqp = new MantisQueryProvider(); } return mqp; } public MantisRepositoryProvider getRepositoryProvider() { if(mrp == null) { mrp = new MantisRepositoryProvider(); } return mrp; } public MantisScheduleProvider getScheduleProvider() { if(msp == null) { msp = new MantisScheduleProvider(); } return msp; } public MantisStatusProvider getStatusProvider() { if(statusProvider == null) { statusProvider = new MantisStatusProvider(); } return statusProvider; } public BugtrackingSupport<MantisRepository, MantisQuery, MantisIssue> getBugtrackingSupport() { if (bf == null) { bf = new BugtrackingSupport<>( getRepositoryProvider(), getQueryProvider(), getIssueProvider() ); } return bf; } public Map<BigInteger, Color> getStatusColorMap() { if(statusColorMap == null) { // Taken from default config statusColorMap = new HashMap<>(); statusColorMap.put(new BigInteger("10"), Color.decode("#FFA0A0")); // new -> red statusColorMap.put(new BigInteger("20"), Color.decode("#FF50A8")); // feedback -> purple statusColorMap.put(new BigInteger("30"), Color.decode("#FFD850")); // acknowledged - > orange statusColorMap.put(new BigInteger("40"), Color.decode("#FFFFB0")); // confirmed -> yellow statusColorMap.put(new BigInteger("50"), Color.decode("#C8C8FF")); // assigned -> blue statusColorMap.put(new BigInteger("80"), Color.decode("#CCEEDD")); // resolved -> bluish-green statusColorMap.put(new BigInteger("90"), Color.decode("#E8E8E8")); // closed -> light gray } return statusColorMap; } }