andbin ha scritto:
Non riesco subito (ma ho già idea di come farlo), te le posto domani o dopodomani.
ok grazie, davvero gentilissimo.
andbin ha scritto:
Purtroppo non mi è ovviamente chiaro il contesto generale della tua applicazione. Tu hai un oggetto Carosello che contiene N puntate, vuoi inserire una nuova puntata verificando prima se esiste già una qualunque puntata per la stessa data?
ti posto il codice di Carosello, Puntata e dell'AzioneAggiungi, così forse ti è più chiaro tutto
// Carosello Posto tutta la classe con tutti i metodi
public class Carosello {
private List<Azienda> listaAziende = new ArrayList<Azienda>();
private List<Azienda> listaAziendeCercate = new ArrayList<Azienda>();
private List<Puntata> listaPuntate = new ArrayList<Puntata>();
private List<Puntata> listaPuntateCercate = new ArrayList<Puntata>();
private List<Spot> listaSpots = new ArrayList<Spot>();
private List<Spot> listaSpotsCercati = new ArrayList<Spot>();
private Controllo controllo;
public List<Azienda> getListaAziendeCercate() {
return listaAziendeCercate;
}
public void ordinaPuntate() {
Collections.sort(listaPuntate);
}
public void setListaAziendeCercate(List<Azienda> listaAziendeCercate) {
this.listaAziendeCercate = listaAziendeCercate;
}
public List<Spot> getListaSpotsCercati() {
return listaSpotsCercati;
}
public void setListaSpotsCercati(List<Spot> listaSpotsCercati) {
this.listaSpotsCercati = listaSpotsCercati;
}
public List<Puntata> getListaPuntateCercate() {
return listaPuntateCercate;
}
public void setListaPuntateCercate(List<Puntata> listaPuntateCercate) {
this.listaPuntateCercate = listaPuntateCercate;
}
public List<Azienda> getListaAziende() {
return listaAziende;
}
public void setListaAziende(List<Azienda> listaAziende) {
this.listaAziende = listaAziende;
}
public List<Puntata> getListaPuntate() {
return listaPuntate;
}
public void setListaPuntate(List<Puntata> listaPuntate) {
this.listaPuntate = listaPuntate;
}
public List<Spot> getListaSpots() {
return listaSpots;
}
public void setListaSpots(List<Spot> listaSpots) {
this.listaSpots = listaSpots;
}
public void addListaSpots(Spot spot){
this.listaSpots.add(spot);
}
public void addListaAziende(Azienda azienda){
this.listaAziende.add(azienda);
}
public void addPuntata(Puntata puntata){
this.listaPuntate.add(puntata);
}
public void removeSpotsCercati( int i ) {
this.listaSpotsCercati.remove(i);
}
public void removeSpot(int i) {
this.listaSpots.remove(i);
}
public void rimuoviSpot(Puntata puntata) {
List<Spot> cercatiS = new ArrayList<Spot>();
for (Spot spot : listaSpots) {
if ((spot.getPuntata()!=puntata)){
cercatiS.add(spot);
}
}
this.listaSpots= cercatiS;
}
public int getNumeroPuntate() {
return this.listaPuntate.size();
}
public Puntata getPuntata(int i){
return (Puntata) this.listaPuntate.get(i);
}
//metodi per cercare gli spot delle puntate
public void cercaIta (Puntata puntata){
List<Spot> cercatiS = new ArrayList<Spot>();
for (Spot spot : listaSpots){
if (spot.getPuntata()==puntata){
if (spot.getAzienda().isItaliana()==true){
cercatiS.add(spot);
}
}
}
this.listaSpotsCercati = cercatiS;
if(listaSpotsCercati.isEmpty()){ //
JOptionPane.showMessageDialog(null, "ATTENZIONE\n"+"Nessuno Spot Presente");
}
}
public void cercaStra (Puntata puntata){
List<Spot> cercatiS = new ArrayList<Spot>();
for (Spot spot : listaSpots){
if (spot.getPuntata()==puntata){
if (spot.getAzienda().isItaliana()==false){
cercatiS.add(spot);
}
}
}
this.listaSpotsCercati = cercatiS;
if(listaSpotsCercati.isEmpty()){
JOptionPane.showMessageDialog(null, "ATTENZIONE\n"+"Nessuno Spot Presente\n");
}
}
public void cercaTutto (Puntata puntata){
List<Spot> cercatiS = new ArrayList<Spot>();
for (Spot spot : listaSpots){
if (spot.getPuntata()==puntata){
cercatiS.add(spot);
}
}
this.listaSpotsCercati = cercatiS;
if(listaSpotsCercati.isEmpty()){
JOptionPane.showMessageDialog(null, "ATTENZIONE\n"+"Nessuno Spot Presente");
}
}
// Cerca
public void cercaAzienda(String nomeAzienda) {
List<Spot> cercatiS = new ArrayList<Spot>();
for (Spot spot : listaSpots){
if (spot.getAzienda().getNomeAzienda().equals(nomeAzienda)){
cercatiS.add(spot);
}
}
listaSpotsCercati = cercatiS;
if(listaSpotsCercati.isEmpty()){
JOptionPane.showMessageDialog(null, "ATTENZIONE\n"+"\n"+"Nessuna Azienda Presente\n"+"\n"+"ATTENZIONE\n"+"\n"+" IL PROGRAMMA E' CASE SENSITIVE\n" +"\n"+"Controllare Maiuscole e Minuscole\n"+"\n"+"Esempio:Scavolini è diverso da scavolini");
}
}
public int mumeroPuntate (){
int cont = 0;
for (Puntata puntata : listaPuntate){
for (Spot spot : listaSpotsCercati){
if (spot.getPuntata().equals(puntata)){
cont++;
}
}
}
return cont;
}
}
// Puntata anche qui posto tutta la classe
public class Puntata implements Comparable <Puntata> {
private Calendar data = new GregorianCalendar();
private List<Spot> listaSpots = new ArrayList<Spot>();
private int ascoltoMin;
private int ascoltoMax;
public Puntata(Calendar data, int ascoltoMin, int ascoltoMax) {
this.data = data;
this.ascoltoMin = ascoltoMin;
this.ascoltoMax = ascoltoMax;
this.data.setLenient(false);
this.data.getTime();
}
public Calendar getData() {
return data;
}
public void setData(Calendar data) {
this.data = data;
}
public List<Spot> getListaSpots() {
return listaSpots;
}
public void setListaSpots(List<Spot> listaSpots) {
this.listaSpots = listaSpots;
}
public void addListaSpots (Spot spot) {
this.listaSpots.add(spot);
}
public String getStringData () {
Date d = data.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
return df.format(d);
}
public int getAscoltoMin() {
return ascoltoMin;
}
public int getAscoltoMax() {
return ascoltoMax;
}
public String getAscoltoMinimo() {
return Integer.toString(ascoltoMin);
}
public void setAscoltoMin(int ascoltoMin) {
this.ascoltoMin = ascoltoMin;
}
public String getAscoltoMassimo() {
return Integer.toString(ascoltoMax);
}
public void setAscoltoMax(int ascoltoMax) {
this.ascoltoMax = ascoltoMax;
}
public int media () {
int media = 0;
return media = (ascoltoMin+ascoltoMax)/2;
}
public String getStringAscoltoMin() {
return Integer.toString(ascoltoMin);
}
public String getStringAscoltoMax() {
return Integer.toString(ascoltoMax);
}
@Override
public String toString() { // Serve a dare un "nome" alla classe
Date d = data.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
return df.format(d);
}
public String toStringPuntata() { // Stampa tutti di dati della Classe
String stringa ="";
stringa += " Data : " + this.toString() + "\n";
stringa += " Ascolto Minimo : " + this.getAscoltoMinimo() + "\n";
stringa += " Ascolto Massimo : " + this.getAscoltoMassimo() + "\n";
return stringa;
}
public int compareTo(Puntata altraPuntata) { // serve ad inserire le date in or
return getData().compareTo(altraPuntata.getData());
}
}
//AzioneAggiungi
public class AzioneAggiungi extends AbstractAction {
private Controllo controllo;
private Log logger = LogFactory.getLog(AzioneAggiungi.class);
public AzioneAggiungi(Controllo controllo) {
this.controllo = controllo;
this.putValue(NAME,"Aggiungi");
this.putValue(SHORT_DESCRIPTION,"Aggiungi Spot");
this.putValue(MNEMONIC_KEY,KeyEvent.VK_U);
this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke("alt U"));
}
public void actionPerformed(ActionEvent e) {
logger.info("\n eseguo l'azione\n "+ "Classe:" +" " + this.getClass().getName() +"\n");
PannelloPrincipale pp = (PannelloPrincipale) this.controllo.getVista().getSottoViste(Costanti.PANNELLO_PRINCIPALE);
FinestraAggiungi fa = (FinestraAggiungi) this.controllo.getVista().getSottoViste(Costanti.FINESTRA_AGGIUNGI);
Carosello carosello = (Carosello) this.controllo.getModello().getBean(Costanti.CAROSELLO);
String nomeAzienda = fa.getTextNomeAzienda().getText();
String partitaIva = fa.getTextPartitaIva().getText();
String telefono = fa.getTextTelefono().getText();
boolean ita = fa.selezionaItaliana();
String nomeSpot = fa.getTextNomeSpot().getText();
String sottotitolo = fa.getTextSottotitolo().getText();
String settore = fa.getTextSettore().getText();
String percorsoFile = fa.getTextPercorsoFile().getText();
String puntateMancanti = (String) fa.getTextPuntateMancanti().getSelectedItem();
String stringaMinimo = (String) fa.getTextAscoltoMin().getText();
String stringaMassimo =(String) fa.getTextAscoltoMax().getText();
int giorno = fa.getComboGiorno().getSelectedIndex();
int mese = fa.getComboMese().getSelectedIndex();
int anno = fa.getComboAnno().getSelectedIndex();
Calendar data = new GregorianCalendar(anno+2000,mese,giorno+1);
String erroriAzienda = this.convalidaAzienda(nomeAzienda, partitaIva, telefono);
String erroriSpot = this.convalidaSpot(nomeSpot, sottotitolo,settore, percorsoFile);
String erroriPuntata = this.convalidaPuntata(stringaMinimo, stringaMassimo);
String erroriData = this.convalidaData(giorno, mese, anno);
if(erroriAzienda.equals("")) {
if (erroriSpot.equals("")) {
if(erroriPuntata.equals("")) {
if(erroriData.equals("")) {
int inserisciMin = Integer.parseInt(stringaMinimo);
int inserisciMax = Integer.parseInt(stringaMassimo);
Puntata puntata = new Puntata(data,inserisciMin,inserisciMax);
Azienda azienda = new Azienda(nomeAzienda, partitaIva, telefono, ita);
Spot spot = new Spot(nomeSpot, sottotitolo, percorsoFile,settore, puntateMancanti, azienda, puntata);
carosello.addListaAziende(azienda);
carosello.addPuntata(puntata);
carosello.addListaSpots(spot);
carosello.ordinaPuntate();
pp.caricaComboBox();
fa.ripulisciTotale();
fa.nascondiFinestra();
fa.finestraInfoFinestra("Inserito Nuovo spot\n" +" " + azienda.toStringAzienda()+spot.toStringSpot()+puntata.toStringPuntata());
logger.info("\nNuovo spot Inserito\n");
}else{
fa.finestraErroriFinestra(erroriData);
logger.error("\nErrore inserimento Data\n");
}
}else{
fa.finestraErroriFinestra(erroriPuntata);
logger.info("\n Errore inserimento Puntata\n");
}
}else{
fa.finestraErroriFinestra(erroriSpot);
logger.info("\n Errore inserimento Spot\n");
}
}else{
fa.finestraErroriFinestra(erroriAzienda);
logger.info("\n Errore inserimento Azienda\n");
}
}
private String convalidaAzienda(String nomeAzienda, String partitaIva, String telefono) {
String errori ="";
int tel = 0;
if ( nomeAzienda.equals("") ) {
errori += "\n il campo Azienda non può essere vuoto ";
}
if ( partitaIva.equals("") ) {
errori += "\n il campo Partita Iva non può essere vuoto ";
}
if (telefono.equals("") ) {
errori += "\n il campo Telefono non può essere vuoto";
} else {
try {
tel = Integer.parseInt(telefono);
} catch ( NumberFormatException nfe ) {
errori += "\n Il campo Telefono deve essere obbligatoriamente un numero";
}
}
return errori;
}
private String convalidaSpot(String nomeSpot, String sottotitolo, String settore, String percorsoFile) {
String errori ="";
if ( nomeSpot.equals("") ) {
errori += "\n il campo Spot non può essere vuoto ";
}
if ( sottotitolo.equals("") ) {
errori += "\n il campo Descrizione non può essere vuoto ";
}
if (settore.equals("") ) {
errori += "\n il campo Settore non può essere vuoto";
}
if (percorsoFile.equals("")) {
errori += "\n il campo Percorso File non può essere vuoto";
}
return errori;
}
private String convalidaPuntata(String stringaMinimo, String stringaMassimo) {
String errori ="";
int minimo = 0;
int massimo = 0;
if ( stringaMinimo.equals("")) {
errori += "\n Il campo Ascolto Minimo non può essere vuoto ";
} else {
try {
minimo = Integer.parseInt(stringaMinimo);
} catch ( NumberFormatException nfe ) {
errori += "\n Il campo Asconto Minimo deve essere obbligatoriamente un numero";
}
}
if ( stringaMassimo.equals("")) {
errori += "\n Il campo Asconto Massimo non può essere vuoto ";
} else {
try {
massimo = Integer.parseInt(stringaMassimo);
} catch ( NumberFormatException nfe ) {
errori += "\n Il campo Ascolto Massimo deve essere obbligatoriamente un numero ";
}
}
if (minimo>massimo) {
errori += "\n Il campo Ascolto Minimo non può essere Minore di Ascolto Massimo.";
}
return errori;
}
private String convalidaData(int giorno, int mese, int anno) {
FinestraAggiungi fa = (FinestraAggiungi) this.controllo.getVista().getSottoViste(Costanti.FINESTRA_AGGIUNGI);
String errori = "";
if ( errori.equals("") ) {
GregorianCalendar data = new GregorianCalendar(anno+2000, mese, giorno+1 );
data.setLenient(false);
try {
data.getTime();
} catch ( IllegalArgumentException iae ) {
errori += " La data inserita è scorretta ";
fa.ripulisciData();
}
}
return errori;
}
}
il mio approccio è stato questo scrivere, in carosello, un metodo booleano che verificasse la presenza di una data in questo modo
public boolean verificaPuntata(Calendar data) {
for(Puntata puntata : listaPuntate) {
if(puntata.getData() == data) {
return true;
}
}
return false;
}
}
poi chiamarlo nell'azione aggiungi dopo aver creato la data in questo modo
.................
boolena verifica = carosello.verificadata(data)
if(verifica == true) {
fa.finestraErrore("\nAttenzione Data Già Presente\n"+ "\n Inserire Nuova data"\n);
}else{
........................... // il codice continua normalmente