Regalamiunsorriso/decompiled-libs/www/acxent-common-1.0.1/it/acxent/anag/Festivita.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;
}
}