231 lines
6.5 KiB
Java
231 lines
6.5 KiB
Java
package it.acxent.anag;
|
|
|
|
import it.acxent.db.ApplParmFull;
|
|
import it.acxent.db.WcString;
|
|
import it.acxent.util.Vectumerator;
|
|
import java.io.Serializable;
|
|
import java.sql.Date;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.SQLException;
|
|
import java.util.Calendar;
|
|
|
|
public class Festivita extends _AnagAdapter implements Serializable {
|
|
private static final long serialVersionUID = -6806543963513972058L;
|
|
|
|
private long id_festivita;
|
|
|
|
private String descrizione;
|
|
|
|
private long giorno;
|
|
|
|
private long mese;
|
|
|
|
private long anno;
|
|
|
|
private Date dataEsclusione;
|
|
|
|
private long flgTipo;
|
|
|
|
private Date dataInizio;
|
|
|
|
private Date dataFine;
|
|
|
|
public static final long TIPO_CALCOLO_FRATELLI = 0L;
|
|
|
|
public static final long TIPO_FESTIVITA_AMBULATORIO = 1L;
|
|
|
|
public static final long TIPO_FESTIVITA_LAVORATIVI = 2L;
|
|
|
|
public Festivita(ApplParmFull newApplParmFull) {
|
|
super(newApplParmFull);
|
|
}
|
|
|
|
public Festivita() {}
|
|
|
|
public void setId_festivita(long newId_festivita) {
|
|
this.id_festivita = newId_festivita;
|
|
}
|
|
|
|
public void setDescrizione(String newDescrizione) {
|
|
this.descrizione = newDescrizione;
|
|
}
|
|
|
|
public void setGiorno(long newGiorno) {
|
|
this.giorno = newGiorno;
|
|
}
|
|
|
|
public void setMese(long newMese) {
|
|
this.mese = newMese;
|
|
}
|
|
|
|
public void setAnno(long newAnno) {
|
|
this.anno = newAnno;
|
|
}
|
|
|
|
public void setFlgTipo(long newFlgTipo) {
|
|
this.flgTipo = newFlgTipo;
|
|
}
|
|
|
|
public long getId_festivita() {
|
|
return this.id_festivita;
|
|
}
|
|
|
|
public String getDescrizione() {
|
|
return (this.descrizione == null) ? "" : this.descrizione;
|
|
}
|
|
|
|
public long getGiorno() {
|
|
return this.giorno;
|
|
}
|
|
|
|
public Date getDataAnno(int l_anno) {
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.set(5, (int)getGiorno());
|
|
cal.set(2, (int)getMese() - 1);
|
|
if (l_anno > 0)
|
|
cal.set(1, l_anno);
|
|
return new Date(cal.getTimeInMillis());
|
|
}
|
|
|
|
public Date getDataAnno() {
|
|
return getDataAnno((int)getAnno());
|
|
}
|
|
|
|
public long getMese() {
|
|
return this.mese;
|
|
}
|
|
|
|
public long getAnno() {
|
|
return this.anno;
|
|
}
|
|
|
|
public long getFlgTipo() {
|
|
return this.flgTipo;
|
|
}
|
|
|
|
protected void deleteCascade() {}
|
|
|
|
public Vectumerator<Festivita> findByCR(FestivitaCR CR, int pageNumber, int pageRows) {
|
|
String s_Sql_Find = "select A.* from FESTIVITA AS A";
|
|
String s_Sql_Order = " order by A.anno, A.mese, A.giorno";
|
|
WcString wc = new WcString();
|
|
if (CR.getDataDa() != null)
|
|
wc.addWc("(A.anno=0 or A.anno is null or A.anno>=" + CR.getAnnoDataDa() + ")");
|
|
if (CR.getDataA() != null)
|
|
wc.addWc("(A.anno=0 or A.anno is null or A.anno<=" + CR.getAnnoDataA() + ")");
|
|
try {
|
|
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString());
|
|
Vectumerator<Festivita> vec = findRows(stmt, 0, 0);
|
|
Vectumerator<Festivita> result = new Vectumerator();
|
|
while (vec.hasMoreElements()) {
|
|
Festivita row = (Festivita)vec.nextElement();
|
|
if (CR.getMeseDataDa() == CR.getMeseDataA()) {
|
|
if (row.getMese() == (long)CR.getMeseDataDa() && row.getGiorno() >= (long)CR.getGiornoDataDa() &&
|
|
row.getGiorno() <= (long)CR.getGiornoDataA())
|
|
result.addElement(row);
|
|
continue;
|
|
}
|
|
if ((row.getMese() == (long)CR.getMeseDataDa() && row.getGiorno() >= (long)CR.getGiornoDataDa()) || (
|
|
row.getMese() > (long)CR.getMeseDataDa() && row.getMese() < (long)CR.getMeseDataA()) || (
|
|
row.getMese() == (long)CR.getMeseDataA() && row.getGiorno() <= (long)CR.getGiornoDataA()))
|
|
result.addElement(row);
|
|
}
|
|
return result;
|
|
} catch (SQLException e) {
|
|
handleDebug(e);
|
|
return AB_EMPTY_VECTUMERATOR;
|
|
}
|
|
}
|
|
|
|
public void findByData(Date l_data, long flgTipo) {
|
|
String s_Sql_Find = "select A.* from FESTIVITA AS A";
|
|
String s_Sql_Order = " order by A.anno, A.mese, A.giorno";
|
|
WcString wc = new WcString();
|
|
long l_giorno = 0L;
|
|
long l_mese = 0L;
|
|
long l_anno = 0L;
|
|
if (l_data != null) {
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.setTime(l_data);
|
|
l_giorno = (long)cal.get(5);
|
|
l_mese = (long)(cal.get(2) + 1);
|
|
l_anno = (long)cal.get(1);
|
|
}
|
|
if (flgTipo == 0L) {
|
|
wc.addWc("((A.anno=0 or A.anno is null) and A.giorno=" + l_giorno + " and A.mese=" + l_mese + ") or (A.anno=" + l_anno + " and A.giorno=" + l_giorno + " and A.mese=" + l_mese + ")");
|
|
} else {
|
|
wc.addWc("((A.anno=0 or A.anno is null) and A.giorno=" + l_giorno + " and A.mese=" + l_mese + ") or (A.anno=" + l_anno + " and A.giorno=" + l_giorno + " and A.mese=" + l_mese + ") OR (A.dataInizio <= ? AND A.dataFine >= ?)");
|
|
}
|
|
try {
|
|
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString());
|
|
int dataCount = 0;
|
|
if (flgTipo != 0L) {
|
|
dataCount++;
|
|
stmt.setDate(dataCount, l_data);
|
|
dataCount++;
|
|
stmt.setDate(dataCount, l_data);
|
|
}
|
|
findFirstRecord(stmt);
|
|
} catch (SQLException e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
public Date getDataEsclusione() {
|
|
return this.dataEsclusione;
|
|
}
|
|
|
|
public void setDataEsclusione(Date dataEsclusione) {
|
|
this.dataEsclusione = dataEsclusione;
|
|
if (dataEsclusione != null) {
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.setTime(dataEsclusione);
|
|
setGiorno((long)cal.get(5));
|
|
setMese((long)(cal.get(2) + 1));
|
|
setAnno((long)cal.get(1));
|
|
}
|
|
}
|
|
|
|
public boolean isFestivo(Date l_data, long flgTipo) {
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.setTime(l_data);
|
|
if (cal.get(7) == 1)
|
|
return true;
|
|
if (flgTipo == 2L &&
|
|
cal.get(7) == 7)
|
|
return true;
|
|
Festivita festivita = new Festivita(getApFull());
|
|
festivita.findByData(l_data, flgTipo);
|
|
if (festivita.getDBState() == 1)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
public Date getDataInizio() {
|
|
return this.dataInizio;
|
|
}
|
|
|
|
public void setDataInizio(Date dataDa) {
|
|
this.dataInizio = dataDa;
|
|
}
|
|
|
|
public Date getDataFine() {
|
|
return this.dataFine;
|
|
}
|
|
|
|
public void setDataFine(Date dataA) {
|
|
this.dataFine = dataA;
|
|
}
|
|
|
|
public long getTotGiorniLavorativiFraDueDate(Date dataDa, Date dataA) {
|
|
long totGg = 0L;
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.setTime(dataDa);
|
|
while (getDateDiff(new Date(cal.getTimeInMillis()), dataA) >= 0L) {
|
|
if (!isFestivo(new Date(cal.getTimeInMillis()), 2L))
|
|
totGg++;
|
|
cal.add(6, 1);
|
|
}
|
|
return totGg;
|
|
}
|
|
}
|