Projet

Général

Profil

Télécharger (6,54 ko) Statistiques
| Branche: | Tag: | Révision:
/*
* This program is a part of the IoTa project.
*
* Copyright © 2008-2012 Université de Caen Basse-Normandie, GREYC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <http://www.gnu.org/licenses/>
*
* See AUTHORS for a list of contributors.
*/
package fr.unicaen.iota.application.client.gui;

import fr.unicaen.iota.application.client.listener.EPCEventListener;
import fr.unicaen.iota.application.util.TimeParser;
import fr.unicaen.iota.application.util.TravelTimeTuple;
import fr.unicaen.iota.mu.EPCISEventTypeHelper;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import org.fosstrak.epcis.model.EPCISEventType;

/**
*
*/
public class SearchArea extends JPanel implements EPCEventListener {

private JTable jTableGenerated = new JTable();
private String epc;
private String sessionId;
private int currentIndex = 0;
private ClosableTabbedPane jtp;
private String title = "";
private JLabel travelTime;
private JLabel nbObjects;
private JButton details;

public SearchArea(String epc, String sessionId, ClosableTabbedPane jtp) {
travelTime = new JLabel("0");
nbObjects = new JLabel("0");
this.sessionId = sessionId;
this.jtp = jtp;
this.epc = epc;
this.setName(epc);
JScrollPane jsp = new JScrollPane();
JPanel statusbar = new JPanel();
jTableGenerated.setModel(new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{
"ID", "EPCs", "Event Type", "BizLoc", "BizStep", "Event Time"
}));
jTableGenerated.setAutoCreateRowSorter(true);
TableColumn column2 = jTableGenerated.getColumnModel().getColumn(1);
column2.setCellRenderer(new TextAreaRenderer());
column2.setMaxWidth(400);
column2.setPreferredWidth(400);
TableColumn column1 = jTableGenerated.getColumnModel().getColumn(0);
column1.setCellRenderer(new IdRenderer());
column1.setPreferredWidth(27);
column1.setMaxWidth(27);
TableColumn column3 = jTableGenerated.getColumnModel().getColumn(2);
column3.setPreferredWidth(90);
column3.setMaxWidth(90);
jsp.setViewportView(jTableGenerated);
details = new JButton("details...");
FlowLayout fl = new FlowLayout();
fl.setAlignment(FlowLayout.RIGHT);
statusbar.setLayout(fl);
statusbar.add(new JLabel("used objects: "));
statusbar.add(nbObjects);
statusbar.add(new JLabel(" | "));
statusbar.add(new JLabel("Complet travel time: "));
statusbar.add(travelTime);
statusbar.add(details);
this.setLayout(new BorderLayout());
this.add(jsp, BorderLayout.CENTER);
this.add(statusbar, BorderLayout.SOUTH);
jTableGenerated.setSelectionBackground(Color.WHITE);
jTableGenerated.setForeground(Color.BLACK);
jTableGenerated.setSelectionForeground(Color.RED);
}

/**
* @return the jTableGenerated
*/
public JTable getJTableGenerated() {
return jTableGenerated;
}

/**
* @param jTableGenerated the jTableGenerated to set
*/
public void setJTableGenerated(JTable jTableGenerated) {
this.jTableGenerated = jTableGenerated;
}

/**
* @return the title
*/
public String getEPC() {
return epc;
}

/**
* @param title the title to set
*/
public void setEPC(String epc) {
this.epc = epc;
}

@Override
public void usedObjectsChanged(String session, int objects) {
if (!session.equals(this.sessionId)) {
return;
}
nbObjects.setText(objects + "");
}

@Override
public void travelTimeChanged(String session, TravelTimeTuple ttt) {
if (!session.equals(this.sessionId)) {
return;
}
int d = (int) (ttt.getTravelTime() / (3600000 * 24));
int h = (int) (ttt.getTravelTime() / (3600000)) - d * 8640;
int m = (int) (ttt.getTravelTime() / (60000)) - h * 3600 - d * 8640;
int s = (int) (ttt.getTravelTime() / (1000)) - m * 60 - h * 3600 - d * 8640;

travelTime.setText(d + " D " + h + " H " + m + " M " + s + " s ");
}

@Override
public void eventReveived(String session, EPCISEventType e) {
if (!session.equals(this.sessionId)) {
return;
}
currentIndex++;
EPCISEventTypeHelper he = new EPCISEventTypeHelper(e);
((DefaultTableModel) getJTableGenerated().getModel()).addRow(new String[]{
currentIndex + "",
formatEPC(he),
he.getType().toString(),
he.getBizLocation(),
he.getBizStep(),
TimeParser.format(he.getEventTime())});
}

public void setTerminated() {
String newTitle = getEPC();
setTitle(newTitle);
}

public void setProcessing() {
String newTitle = getEPC();
setTitle(newTitle);
}

private String formatEPC(EPCISEventTypeHelper e) {
List<String> res = new ArrayList<String>();
List<String> l = e.getEpcList();
for (String s : l) {
res.add(" EPC: " + s + " \n");
}
if (!e.getParentID().equals("")) {
res.add(" Parent ID: " + e.getParentID() + " \n");
}
l = e.getChildren();
for (String s : l) {
res.add(" | child: " + s + " \n");
}
StringBuilder str = new StringBuilder();
for (String s : res) {
str.append(s);
}
return str.toString();
}

/**
* @return the title
*/
public String getTitle() {
return title;
}

/**
* @param title the title to set
*/
public void setTitle(String title) {
this.title = title;
jtp.setTitleAt(this, title);
jtp.setSelectedIndex(jtp.indexOfComponent(this));
}
}
(5-5/7)