Hallo,
ich habe einen Auftrag erhalten ein kleines Programm zu schreiben.
Auf diesem möchte ich nun das MVC Pattern anwenden.
Das Programm wird zum Upload von Jobs auf 3 Webserver benutzt.
Ein Job besteht aus Dateien.
Das ganze Programm soll eine GUI bekommen. Beim Start werden vorhandene Jobs in einer Tabelle aufgelistet. Jobs können ausgewählt werden und dann mit einem Button "Upload Starten" hochgeladen werden.
Nun möchte ich hier das MVC Pattern anwenden.
So sieht meine Auflistung aktuell aus:
Model
- Job
Controller
- JobController
View
- JMain
- JobTable
- JobTableModel
Den Code stelle ich euch auc mal zur Verfügung. Denn ich Frage mich nun, wie verwalte ich die verschiedenen Jobs nun in dem programm? Passiert das über die Controller klasse? Oder wie wird die Controller Klasse dort eingesetzt?
Wie ihr seht steht im Controller nicht wirklich viel.. Da weiß ich aktuell leider nicht weiter ;(
Ich weiß auch nicht, wie ich die aktuellen Jobs die in der JTable angezeigt werden im Programm verwalten soll.
Schreibe ich mir dort eine JobVerwaltung?
Ich bräuchte son paar Denkanstöße von euch.. :rtfm:
Viele Grüße
P.S. habe euch nen Screenshot beigefügt, wie das ganze aktuell aussieht...
ich habe einen Auftrag erhalten ein kleines Programm zu schreiben.
Auf diesem möchte ich nun das MVC Pattern anwenden.
Das Programm wird zum Upload von Jobs auf 3 Webserver benutzt.
Ein Job besteht aus Dateien.
Das ganze Programm soll eine GUI bekommen. Beim Start werden vorhandene Jobs in einer Tabelle aufgelistet. Jobs können ausgewählt werden und dann mit einem Button "Upload Starten" hochgeladen werden.
Nun möchte ich hier das MVC Pattern anwenden.
So sieht meine Auflistung aktuell aus:
Model
- Job
Controller
- JobController
View
- JMain
- JobTable
- JobTableModel
Den Code stelle ich euch auc mal zur Verfügung. Denn ich Frage mich nun, wie verwalte ich die verschiedenen Jobs nun in dem programm? Passiert das über die Controller klasse? Oder wie wird die Controller Klasse dort eingesetzt?
Java:
public class JMain extends JFrame {
private JobTable table;
private JobTableScrollPane spJobTable;
public JMain() {
init();
}
private void init() {
this.setLayout(new BorderLayout());
this.setTitle("UploadManager");
this.setIconImage(createImageIcon("/icons/UploadManagerIcon.png").getImage());
this.setSize(700, 300);
this.setMinimumSize(new Dimension(700, 500));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
table = new JobTable();
spJobTable = new JobTableScrollPane(table);
this.add(spJobTable, BorderLayout.CENTER);
JobButtonBar toolbar = new JobButtonBar();
this.add(toolbar, BorderLayout.SOUTH);
this.setVisible(true);
}
/** Returns an ImageIcon, or null if the path was invalid. */
protected ImageIcon createImageIcon(String path) {
URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
public JobTable getTable() {
return table;
}
public void setTable(JobTable table) {
this.table = table;
}
}
Java:
public class JobTable extends JTable{
private JobTableModel model;
private Config config = Config.getInstance();
private FileIO fileIO = new FileIO();
public JobTable(){
init();
}
private void init() {
model = new JobTableModel(getData(fileIO.listFolders(config.getSourceRoot())));
this.setModel(model);
this.setAutoCreateRowSorter(true);
this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if(lsm.isSelectionEmpty()){
}else{
int selectedRow = lsm.getMinSelectionIndex();
System.out.println(selectedRow);
}
}
});
JTableHeader tblHeader = this.getTableHeader();
tblHeader.setResizingAllowed(false);
tblHeader.setReorderingAllowed(false);
// Spaltenbreite setzen
this.getColumnModel().getColumn(0).setMaxWidth(43);
this.getColumnModel().getColumn(1).setMinWidth(120);
this.getColumnModel().getColumn(2).setMinWidth(450);
this.getColumnModel().getColumn(3).setMinWidth(60);
}
private ArrayList<Job> getData(File[] files){
ArrayList<Job> jobDataList = new ArrayList<Job>();
for (File file : files) {
String date = formatedDate(file.getName().substring(config.getFoldername().length()));
Job jobObj = new Job(file.getName(), file.getPath(), date);
jobDataList.add(jobObj);
}
return jobDataList;
}
/**
* Formatiert das Datum im EDV Format(YYMMDD) in ein
* Datum mit dem Basis Format (DD.MM.YYYY)
*
* @param parmDate
* @return
*/
public String formatedDate(String parmDate){
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
String jahr= parmDate.substring(0, 2);
String monat= parmDate.substring(3,4);
String tag= parmDate.substring(4);
Date date = null;
try {
date = sdf.parse(tag + "." + monat + "." + "20" + jahr);
} catch (ParseException e) {
e.printStackTrace();
}
return sdf.format(date);
}
}
Java:
public class Job {
private String sourceFolder;
private String saveFolder;
private String date;
public boolean toUpload = false;
private String name;
public Job(String name, String sourceFolder, String date){
this.setName(name);
this.setSourceFolder(sourceFolder);
this.setDate(date);
}
public String getSourceFolder() {
return sourceFolder;
}
public void setSourceFolder(String sourceFolder) {
this.sourceFolder = sourceFolder;
}
public String getSaveFolder() {
return saveFolder;
}
public void setSaveFolder(String saveFolder) {
this.saveFolder = saveFolder;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public boolean isToUpload() {
return toUpload;
}
public void setToUpload(boolean toUpload) {
this.toUpload = toUpload;
}
public String getName() {
return name;
}
Java:
public class JobController {
private JMain _view;
public JobController(){
this._view = new JMain();
}
}
Wie ihr seht steht im Controller nicht wirklich viel.. Da weiß ich aktuell leider nicht weiter ;(
Ich weiß auch nicht, wie ich die aktuellen Jobs die in der JTable angezeigt werden im Programm verwalten soll.
Schreibe ich mir dort eine JobVerwaltung?
Ich bräuchte son paar Denkanstöße von euch.. :rtfm:
Viele Grüße
P.S. habe euch nen Screenshot beigefügt, wie das ganze aktuell aussieht...