package husacct.analyse.presentation.reconstruct.mojo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.GroupLayout.Alignment; import org.apache.log4j.Logger; import husacct.ServiceProvider; import husacct.analyse.task.reconstruct.ReconstructArchitecture; import husacct.common.dto.ModuleDTO; import husacct.common.help.presentation.HelpableJPanel; import husacct.control.IControlService; import husacct.define.IDefineService; import javax.swing.JTextField; import javax.swing.border.TitledBorder; public class MojoJPanelExport extends HelpableJPanel implements ActionListener { private static final long serialVersionUID = 2911110095301402204L; private JLabel exportPath; private JButton exportBrowse, exportArchitecture; private JTextField exportText; private final Logger logger = Logger.getLogger(ReconstructArchitecture.class); private IControlService controlService; public MojoJPanelExport(){ setBorder(new TitledBorder("Export current Intended Architecture")); setPageComponents(); createLayout(); controlService = ServiceProvider.getInstance().getControlService(); } private void setPageComponents(){ exportPath = new JLabel("Export path:"); exportText = new JTextField(40); exportText.setEnabled(false); exportBrowse = new JButton("Browse"); exportBrowse.addActionListener(this); exportArchitecture = new JButton("Export"); exportArchitecture.addActionListener(this); exportArchitecture.setEnabled(false); } private void createLayout(){ GroupLayout groupLayout = new GroupLayout(this); groupLayout.setAutoCreateGaps(true); groupLayout.setAutoCreateContainerGaps(true); groupLayout.setHorizontalGroup( groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(groupLayout.createSequentialGroup() .addContainerGap() .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addComponent(exportPath)) .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addComponent(exportText) .addComponent(exportArchitecture)) .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING) .addComponent(exportBrowse)) .addContainerGap())); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) .addComponent(exportPath) .addComponent(exportText) .addComponent(exportBrowse)) .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addComponent(exportArchitecture)))); this.setLayout(groupLayout); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource() == exportBrowse){ exportText.setText(controlService.showMojoExportImportDialog(true)); enableExportArchitecture(); } if(e.getSource() == exportArchitecture){ exportFile(exportText.getText()); } } private void enableExportArchitecture() { if(!exportText.getText().trim().isEmpty()){ exportArchitecture.setEnabled(true); } else{ exportArchitecture.setEnabled(false); } } private void exportFile(String path){ IDefineService defineService = ServiceProvider.getInstance().getDefineService(); try { File exportFile = new File(path); exportFile.createNewFile(); FileWriter writer = new FileWriter(exportFile); String toWrite = ""; for(ModuleDTO moduleDTO : defineService.getAllModules()){ for(String softwareDTOPath : defineService.getAssignedSoftwareUnitsOfModule(moduleDTO.logicalPath)){ toWrite = "contain " + moduleDTO.logicalPath.replaceAll(" ", "") + " " + softwareDTOPath + "\n"; writer.write(toWrite); } } writer.flush(); writer.close(); } catch (IOException e1) { logger.info("Error occured while writing the file"); } } }