Regalamiunsorriso/decompiled-libs/www/acxent-common-1.0.1/it/acxent/news/News.java

488 lines
15 KiB
Java

package it.acxent.news;
import it.acxent.anag.Users;
import it.acxent.common.Parm;
import it.acxent.common.StatusMsg;
import it.acxent.db.AddImgInterface;
import it.acxent.db.ApplParmFull;
import it.acxent.db.DBAdapter;
import it.acxent.db.DBAdapterException;
import it.acxent.db.ResParm;
import it.acxent.db.WcString;
import it.acxent.mail.MailMessage;
import it.acxent.mail.MailProperties;
import it.acxent.util.Vectumerator;
import java.io.Serializable;
import java.net.URLEncoder;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
public class News extends DBAdapter implements Serializable, AddImgInterface {
private Date dataNews;
private Date dataFine;
private Date dataFineVld;
private Timestamp dataTmstUltAgg;
private long flgVisibile;
private long id_news;
public static final String P_NEWS_ATTACH_PATH = "NEWS_ATTACH_PATH";
private static final String DEFAULT_NEWS_ATTACH_PATH = "_news/_attach/";
private static final String P_PATH_MAIL_NEWS = "PATH_MAIL_NEWS";
private String pathAllegatoOld;
private long id_tipoNews;
private TipoNews tipoNews;
private Date dataInvio;
public static final String P_NEWS_LANG_DEFAULT = "NEWS_LANG_DEFAULT";
class ThreadInviaNews extends Thread {
private final NewsCR CR;
public ThreadInviaNews(NewsCR l_CR) {
this.CR = l_CR;
if (!News.isThreadAttivo()) {
News.threadInviaNews = true;
start();
}
}
public void run() {
try {
long numRecord = 0L;
long l_delayMsgEmail = News.this.getParm("CODA_MESSAGGI_EMAIL_DELAY").getNumeroLong() * 1000L;
Users users = new Users(this.CR.getApFull());
NewsUsers nu = new NewsUsers(this.CR.getApFull());
News news = new News(this.CR.getApFull());
news.findByPrimaryKey(this.CR.getId_news());
ResParm rp = new ResParm(true);
Vectumerator<Users> vec;
while ((vec = users.findUsersAbilitatiNewsByNews(this.CR.getId_news(), 1, 500)).hasMoreElements()) {
while (vec.hasMoreElements()) {
numRecord++;
Users row = (Users)vec.nextElement();
rp = News.inviaMessaggioMail(news, row);
if (rp.getStatus()) {
rp = nu.addUser(news.getId_news(), row.getId_users(), "");
} else {
rp = nu.addUser(news.getId_news(), row.getId_users(), rp.getMsg());
}
if (news.getDataInvio() == null) {
news.setDataInvio(DBAdapter.getToday());
news.save();
}
News.threadInviaNewsMsg = "Attenzione! Thread invio news esecuzione!!! Record processati: " + numRecord;
if (vec.hasMoreElements()) {
System.out.println("sleep....");
if (l_delayMsgEmail != 0L)
sleep(l_delayMsgEmail);
System.out.println(".. altro messaggio..");
}
}
}
} catch (Exception e) {
e.printStackTrace();
News.this.handleDebug(e);
}
News.threadInviaNews = false;
System.out.println("Fine invio messaggio ");
}
}
public static boolean threadInviaNews = false;
public static String threadInviaNewsMsg = "";
private static final String DEFAULT_NEWS_IMG_PATH = "_news/_img/";
public static final String P_NEWS_IMG_PATH = "NEWS_IMG_PATH";
public static final String LIST_ALLEGATI = "listaAllegatiNews";
public News() {}
public News(ApplParmFull newApplParmFull) {
super(newApplParmFull);
}
protected ResParm checkDeleteCascade() {
return new ResParm(true);
}
protected void deleteCascade() {}
public Vectumerator<News> findByCR(NewsCR CR, int pageNumber, int pageRows) throws DBAdapterException, SQLException {
String s_Sql_Find = "select A.* from NEWS AS A ";
s_Sql_Find = s_Sql_Find + " left JOIN TIPO_NEWS AS C ON A.id_tipoNews = C.id_tipoNews ";
String s_Sql_Order = " order by A.dataNews desc";
if (CR.getFlgOrderBy() == 0L)
s_Sql_Order = " order by A.dataNews ASC";
WcString wc = new WcString();
if (!CR.getTitolo().isEmpty()) {
s_Sql_Find = s_Sql_Find + " INNER JOIN DESC_TXT_LANG AS B ON B.tabella = 'NEWS' AND ((B.campo = 'testo' AND B.idTabella = A.id_news and B.lang='it' ) OR (B.campo = 'titolo' AND B.idTabella = A.id_news and B.lang='it' )) ";
wc.addWc("B.descrizione like '%" + CR.getTitolo() + "%' ");
}
if (CR.getFlgVisibile() == 0L) {
wc.addWc("(A.flgVisibile is null or A.flgVisibile=0)");
} else if (CR.getFlgVisibile() > 0L) {
wc.addWc("A.flgVisibile =" + CR.getFlgVisibile());
}
if (CR.getFlgPubblica() > 0L)
wc.addWc("C.flgPubblica=" + CR.getFlgPubblica());
if (CR.getId_tipoNews() > 0L)
wc.addWc("A.id_tipoNews=" + CR.getId_tipoNews());
if (CR.getDataNews() != null)
wc.addWc("A.dataNews=?");
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + String.valueOf(wc));
int crCount = 1;
if (CR.getDataNews() != null) {
stmt.setDate(crCount, CR.getDataNews());
crCount++;
}
return findRows(stmt, pageNumber, pageRows);
}
public Date getDataNews() {
return this.dataNews;
}
public String getFormattedDataNews() {
return getDataFormat().format(this.dataNews);
}
public Date getDataFineVld() {
return this.dataFineVld;
}
public Timestamp getDataTmstUltAgg() {
return this.dataTmstUltAgg;
}
public long getId_news() {
return this.id_news;
}
public void setDataNews(Date newData) {
this.dataNews = newData;
}
public void setDataFineVld(Date newDataFineVld) {
this.dataFineVld = newDataFineVld;
}
public void setDataTmstUltAgg(Timestamp newDataTmstUltAgg) {
this.dataTmstUltAgg = newDataTmstUltAgg;
}
public void setId_news(long newId_news) {
this.id_news = newId_news;
}
public void setFlgVisibile(long flgVisibile) {
this.flgVisibile = flgVisibile;
}
public long getFlgVisibile() {
return this.flgVisibile;
}
public String getVisibile() {
return (this.flgVisibile == 1L) ? "Si" : "No";
}
public String getPathAllegato() {
return getParm("NEWS_ATTACH_PATH").getTesto();
}
public String getPathAllegatoOld() {
return (this.pathAllegatoOld == null) ? "" : this.pathAllegatoOld;
}
public String getNewsAttachPath() {
return getParm("NEWS_ATTACH_PATH").getTesto();
}
public ResParm addAllegato(AllegatoNews row) {
AllegatoNews bean = new AllegatoNews(getApFull());
bean.findByNewsNomeFile(row.getId_news(), row.getNomeFile());
if (bean.getDBState() == 1)
return new ResParm(false, "Nome File Duplicato");
row.setDBState(0);
ResParm rp = row.save();
return rp;
}
public ResParm delAllegato(AllegatoNews row) {
AllegatoNews bean = new AllegatoNews(getApFull());
bean.findByPrimaryKey(row.getId_allegatoNews());
return bean.delete();
}
public Vectumerator<News> getAllegati() {
return new AllegatoNews(getApFull()).findById_news(getId_news(), 0, 0);
}
public static final void initApplicationParms(ApplParmFull ap) {
boolean debug = false;
if (ap != null) {
DBAdapter.logDebug(debug, "News initParms: start");
Parm bean = new Parm(ap);
String l_tipoParm = "NEWS";
StatusMsg.updateMsgByTag(ap, "INIT", l_tipoParm);
bean.findByCodice("NEWS_LANG_DEFAULT");
bean.setFlgAdmin(1L);
bean.setTipoParm(l_tipoParm);
bean.setCodice("NEWS_LANG_DEFAULT");
bean.setDescrizione("NEWS_LANG_DEFAULT");
bean.setFlgTipo(0L);
if (bean.getTesto().isEmpty())
bean.setTesto("it");
bean.setNota("LINGUA DI DEFAULT PER LA VISUALIZZAZIONE DELLE NEWS. SE NON C'E' LA DESCRIZIONE IL LINGUA PRENDO QUELLA DELLA LINGUA DI DEFAULT.<BR>UTILIZZARE I CODICE STANDARD (it, en, de, fr, ...=");
bean.save();
bean.findByCodice("NEWS_IMG_PATH");
bean.setFlgAdmin(1L);
bean.setTipoParm(l_tipoParm);
bean.setCodice("NEWS_IMG_PATH");
bean.setDescrizione("NEWS_IMG_PATH");
bean.setFlgTipo(0L);
if (bean.getTesto().isEmpty())
bean.setTesto("_news/_img/");
bean.setNota("NEWS IMG PATH RELATIVO A docBase. Default: _news/_img/. (deve finire con /)");
bean.save();
bean.findByCodice("NEWS_ATTACH_PATH");
bean.setFlgAdmin(1L);
bean.setTipoParm(l_tipoParm);
bean.setCodice("NEWS_ATTACH_PATH");
bean.setDescrizione("NEWS_ATTACH_PATH");
bean.setFlgTipo(0L);
if (bean.getTesto().isEmpty())
bean.setTesto("_news/_attach/");
bean.setNota("NEWS ATTACH PATH RELATIVO A docBase. Default: _news/_attach/. (deve finire con /)");
bean.save();
bean.findByCodice("PATH_IMG_NEWSLETTER");
bean.setFlgAdmin(1L);
bean.setTipoParm(l_tipoParm);
bean.setCodice("PATH_IMG_NEWSLETTER");
bean.setDescrizione("PATH_IMG_NEWSLETTER");
bean.setFlgTipo(0L);
if (bean.getTesto().isEmpty())
bean.setTesto("_news/_newsletterImg/");
bean.setNota("NEWSLETTER PATH IMMAGINI RELATIVO A docBase. Default: _news/_newsletterImg/. (deve finire con /)");
bean.save();
bean.findByCodice("PATH_MAIL_NEWS");
bean.setFlgAdmin(1L);
bean.setTipoParm(l_tipoParm);
bean.setCodice("PATH_MAIL_NEWS");
bean.setDescrizione("PATH_MAIL_NEWS");
bean.setFlgTipo(0L);
if (bean.getTesto().isEmpty())
bean.setTesto("mailMessage/news.txt");
bean.setNota("NEWS PATH RELATIVO AL TEMPLATE MAIL");
bean.save();
DBAdapter.logDebug(debug, "News initParms: stop");
}
}
public long getId_tipoNews() {
return this.id_tipoNews;
}
public void setTipoNews(TipoNews newTipoNews) {
this.tipoNews = newTipoNews;
}
public TipoNews getTipoNews() {
this.tipoNews = (TipoNews)getSecondaryObject(this.tipoNews, TipoNews.class, getId_tipoNews());
return this.tipoNews;
}
public void setId_tipoNews(long id_tipoNews) {
this.id_tipoNews = id_tipoNews;
setTipoNews(null);
}
public String getPathImmagini() {
return getParm("NEWS_IMG_PATH").getTesto();
}
public String getNewsLangDefault() {
return getParm("NEWS_LANG_DEFAULT").getTesto();
}
public boolean useDescLangTables() {
return true;
}
public String getTitolo() {
return getTitolo("it");
}
public String getTitolo(String lang) {
if (lang.isEmpty())
lang = "it";
String temp = getDescTxtLang("titolo", lang);
if (temp.isEmpty())
return getDescTxtLang("titolo", getNewsLangDefault());
return temp;
}
public String getTitolo(String lang, int stringCaseType) {
String str = new String();
str = convertStringCase(getTitolo(lang), stringCaseType);
return str;
}
public String getTesto() {
return getTesto("it");
}
public String getTesto(String lang) {
if (lang.isEmpty())
lang = "it";
getDescTxtLang("testo", lang);
String temp = getDescTxtLang("testo", lang);
if (temp.isEmpty())
return getDescTxtLang("testo", getNewsLangDefault());
return temp;
}
public String getTesto(String lang, int stringCaseType) {
String str = new String();
str = convertStringCase(getTesto(lang), stringCaseType);
return str;
}
public String getSommario() {
return getSommario("it");
}
public String getSommario(String lang) {
if (lang.isEmpty())
lang = "it";
String temp = getDescTxtLang("sommario", lang);
if (temp.isEmpty())
return getDescTxtLang("sommario", getNewsLangDefault());
return temp;
}
public String getSommario(String lang, int stringCaseType) {
String str = new String();
str = convertStringCase(getSommario(lang), stringCaseType);
return str;
}
public String getLink() {
return getLink("it");
}
public String getLink(String lang) {
if (lang.isEmpty())
lang = "it";
String temp = getDescTxtLang("link", lang);
if (temp.isEmpty())
return getDescTxtLang("link", getNewsLangDefault());
return temp;
}
public String getLink(String lang, int stringCaseType) {
String str = new String();
str = convertStringCase(getTitolo(lang), stringCaseType);
return str;
}
public Date getDataInvio() {
return this.dataInvio;
}
public void setDataInvio(Date dataInvio) {
this.dataInvio = dataInvio;
}
public static boolean isThreadAttivo() {
return threadInviaNews;
}
public synchronized ResParm inviaMessaggi(NewsCR CR) {
if (!isThreadAttivo()) {
new ThreadInviaNews(CR);
return new ResParm(true, "Thread invio messaggi avviato....");
}
return new ResParm(false, "ATTENZIONE!! Thread in esecuzione!!!");
}
public void findLastNews() {
String s_Sql_Find = "select A.* from NEWS AS A ";
String s_Sql_Order = " order by A.dataNews desc, A.id_news desc";
WcString wc = new WcString();
wc.addWc("A.flgVisibile=1");
wc.addWc("(A.dataFine is null || A.dataFine>?)");
try {
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + String.valueOf(wc));
stmt.setDate(1, getToday());
findFirstRecord(stmt);
} catch (Exception e) {
handleDebug(e);
}
}
public String getTitoloUrl(String lang) {
String temp = getTitolo(lang);
try {
temp = temp.replace("/", "-");
temp = temp.replace("&euro;", "");
return URLEncoder.encode(temp, "utf-8");
} catch (Exception e) {
return temp;
}
}
public static final synchronized ResParm inviaMessaggioMail(News bean, Users users) {
ResParm rp = new ResParm(true);
MailProperties mp = new MailProperties();
if (users.getEMail().isEmpty()) {
mp.put("TO", users.getClifor().getEMail());
} else {
mp.put("TO", users.getEMail());
}
mp.put("FROM", bean.getParm("CODA_MESSAGGI_MAIL_FROM").getTesto());
mp.put("SUBJECT", "Econpower: " + bean.getTitolo(users.getLang()));
mp.put("ISHTML", "false");
String mailMessage = bean.getDocBase() + bean.getDocBase();
MailMessage mf = new MailMessage(bean.getApFull(), mailMessage);
mf.setQuestionMark(false);
if (users.getId_clifor() == 0L) {
mf.setString("cliente", users.getCognomeNome());
} else {
mf.setString("cliente", users.getClifor().getDescrizioneCliente());
}
mf.setString("sommario", bean.getSommario(users.getLang()));
mp.put("MSG", mf.getMessage());
MailMessage mm = new MailMessage(bean.getApFull());
rp = mm.sendMailMessage(mp, false);
return rp;
}
public Date getDataFine() {
return this.dataFine;
}
public void setDataFine(Date dataFine) {
this.dataFine = dataFine;
}
public String getPathImg() {
return getPathImmagini();
}
}