/**
* Package des EJB
* @author Calexo
*/
package com.calexo.openhra.serveur.ejb;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import javax.ejb.EJBException;
import javax.ejb.FinderException;
import javax.ejb.RemoveException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
import javax.naming.NamingException;
import org.jboss.logging.Logger;
import com.calexo.openhra.interfaces.ejb.*;
import com.calexo.openhra.serveur.Javixo4OpenHRA;
import com.calexo.openhra.serveur.RandPass;
/**
*
* Bean de service de OpenHRA<br>
* Permet d'interagir avec les diff�rents Bean CMP et BMP.<br>
*
* @author calexo
*
* @ejb.bean name="GestionClients"
* display-name="Gestion OpenHRA"
* description="Gestion : Session Bean unique du OpenHRA"
* jndi-name="ejb/GestionClients"
* type="Stateless"
* view-type="remote"
* @ejb.util generate = "physical"
*
*/
public class GestionClientsBean implements SessionBean {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Contient le password CmdMail issu du ConfigBean
* @see com.calexo.openhra.serveur.ejb.ConfigBean
*/
private static String cmdPassword;
/**
* Contient le requester CmdMail issu du ConfigBean
* @see com.calexo.openhra.serveur.ejb.ConfigBean
*/
private static String cmdMailRequester;
/**
* Logger
*/
private static final Logger logger = Logger.getLogger(GestionClients.class);
/**
* Constructeur du bean
*/
public GestionClientsBean() {
super();
cmdPassword=getConfig("clxcmdpass");
cmdMailRequester=getConfig("HTTP_Serveur_Admin");
}
public void setSessionContext(SessionContext ctx)
throws EJBException,
RemoteException {
}
public void ejbRemove() throws EJBException, RemoteException {
}
public void ejbActivate() throws EJBException, RemoteException {
}
public void ejbPassivate() throws EJBException, RemoteException {
}
/**
* Default create method
* @throws CreateException
* @ejb.create-method
*/
public void ejbCreate() throws CreateException {
}
/**
* Renvoie le login libre, a partir du nom
* @param pName Nom du login
* @return String : Login G�n�r�
*/
private String generateLoginFromName(final java.lang.String pName) {
ClientLocalHome ch = null;
String retLogin;
int maxLoginIndex = 0;
int tmpind;
String Prefix = pName.substring(0, 2).toUpperCase();
Prefix = Prefix.replaceAll("[^\\w]", "X");
try {
ch = ClientUtil.getLocalHome();
final Iterator it = ch.findByLogin(Prefix + "%").iterator();
while (it.hasNext()) {
tmpind = Integer.parseInt(((ClientLocal) it.next()).getLogin()
.substring(2, 5));
if (tmpind > maxLoginIndex)
{
maxLoginIndex = tmpind;
}
}
final int NewLoginNum = maxLoginIndex + 1;
retLogin = Prefix;
for (int i = 3; i > String.valueOf(NewLoginNum).length(); i--)
{
retLogin += "0";
}
retLogin += String.valueOf(NewLoginNum);
} catch (NamingException e1) {
e1.printStackTrace();
return null;
} catch (FinderException e) {
e.printStackTrace();
return pName.substring(0, 2).toUpperCase() + "001";
}
return retLogin;
}
/**
*
* Cr�e un client avec le Nom<br>
* <i>Obsolete</i>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @Deprecated Utiliser ClientSave
*/
public boolean ClientCreate(final java.lang.String pName) {
ClientLocal c;
try {
c = ClientUtil.getLocalHome().create(
pName,
"",
generateLoginFromName(pName));
c.setCreated(Boolean.TRUE);
} catch (NamingException e) {
e.printStackTrace();
return false;
} catch (CreateException e) {
e.printStackTrace();
return false;
}
return ((c != null) && (c.getName().equals(pName)));
}
private class OpenHRAComp implements Comparator, Serializable {
private static final long serialVersionUID = 1L;
public int compare (Object o1, Object o2) {
try{
if (o1 instanceof ClientValue)
return ((ClientValue)o1).getLogin().compareTo(((ClientValue)o2).getLogin());
else if (o1 instanceof BaseDonneesValue)
return ((BaseDonneesValue)o1).getNom().compareTo(((BaseDonneesValue)o2).getNom());
else if (o1 instanceof SiteValue)
return ((SiteValue)o1).getId().compareTo(((SiteValue)o2).getId());
else if (o1 instanceof CmdMailValue)
return ((CmdMailValue)o1).getId().compareTo(((CmdMailValue)o2).getId());
else return 0;
} catch (Exception e) {
System.err.println("OpenHRAComp : " + e.getMessage());
return 0;
}
}
}
/**
* Liste les clients.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ClientValue
*
*/
public Collection ClientsList() {
Collection coll = null;
HashSet result = new HashSet();
try {
coll = ClientUtil.getLocalHome().findAll();
final Iterator it = coll.iterator();
while (it.hasNext()) {
final ClientLocal cli = (ClientLocal) it.next();
final ClientValue clidata = cli.getClientValue();
result.add(clidata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Ram�ne les Clients dont le login debute par pLogin
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ClientValue
*
*/
public Collection ClientSearchByLogin(final String pLogin) {
Collection result = new HashSet();
try {
Collection resultCliLocal = ClientUtil.getLocalHome().findByLogin(
pLogin);
if (resultCliLocal == null) {
throw new FinderException("resultCliLocal null");
}
Iterator it = resultCliLocal.iterator();
while (it.hasNext()) {
ClientLocal cliloc = (ClientLocal) it.next();
result.add(cliloc.getClientValue());
}
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Ramene les Clients dont le Login, NomPrenom ou eMail debute par pCrit
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ClientValue
* @param String pCrit Crit�re
*/
public Collection ClientSearchMultiCritere(final String pCrit) {
Collection result = new HashSet();
try {
Collection resultCliLocal = ClientUtil.getLocalHome().findMultiCritere(pCrit);
if (resultCliLocal == null) {
throw new FinderException("resultCliLocal null");
}
Iterator it = resultCliLocal.iterator();
while (it.hasNext()) {
ClientLocal cliloc = (ClientLocal) it.next();
result.add(cliloc.getClientValue());
}
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
try {
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
} catch (Exception e) {
logger.error("ClientSearchMultiCritere - Tri - ",e);
return null;
}
}
/**
* Liste les nouveaux clients.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ClientValue
*
*/
public Collection ClientListNew() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = ClientUtil.getLocalHome().findNew();
Iterator it = coll.iterator();
while (it.hasNext()) {
ClientLocal cli = (ClientLocal) it.next();
ClientValue clidata = cli.getClientValue();
result.add(clidata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Liste les clients modifi�s.
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ClientValue
*
*/
public Collection ClientListUpdated() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = ClientUtil.getLocalHome().findNew();
Iterator it = coll.iterator();
while (it.hasNext()) {
ClientLocal cli = (ClientLocal) it.next();
ClientValue clidata = cli.getClientValue();
result.add(clidata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Supprime un Client<br>
* Utilisation d�conseill�e
* @ejb.interface-method view-type = "remote"
* @Deprecated
*/
public boolean ClientDelete(final java.lang.String pLogin) {
boolean ret = false;
Collection result;
try {
result = ClientUtil.getLocalHome().findByLogin(pLogin);
if (result.size() != 1) {
throw new EJBException("Plusieurs Login correspondant � '"
+ pLogin
+ "'");
}
((ClientLocal) result.iterator().next()).remove();
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
} catch (RemoveException e) {
e.printStackTrace();
}
return ret;
}
/**
* Reset le password et g�n�re l'avis
* @ejb.interface-method view-type = "remote"
* @return boolean indiquant la r�ussite de l'op�ration
*/
public boolean ClientGeneratePass(
final com.calexo.openhra.interfaces.ejb.ClientValue clientValue)
{
String newPass = new RandPass().getPass(8);
clientValue.setMotDePasse(newPass);
ClientSave(clientValue);
// CmdMail
// Inutile car changement mot de passe g�r� dans ClientSave
// Avixo
// Inutile car changement mot de passe g�r� dans ClientSave
return true;
}
/**
* Sauve un client<br>
* Ajout ou modification (en se basant sur le login)<BR>
* Toujours cr�ation si le login n'est pas fourni
* @ejb.interface-method view-type = "remote"
* @return String indiquant le login du client
*/
public String ClientSave(
com.calexo.openhra.interfaces.ejb.ClientValue clientValue)
throws RuntimeException
{
ClientLocal cliLoc = null;
ClientLocalHome cliLocHome = null;
boolean bCreation = false; // Cr�� ou juste cr�� avant
boolean isPassChanged = false;
String cmdAdduser=null;
// CmdAdduser=adduser -mk -d /home/%% -s /bin/false -g users -c%% %%
try {
cliLocHome = ClientUtil.getLocalHome();
} catch (NamingException ne) {
throw new EJBException(ne.getMessage());
}
if (clientValue.getLogin() == null)
{
logger.debug("Login est null");
bCreation = true;
}
else
{
try {
cliLoc = cliLocHome.findByPrimaryKey(clientValue.getLogin());
// Le client existe deja -> modification
if (cliLoc.getMotDePasse()==null
|| clientValue.getMotDePasse()==null
|| !cliLoc.getMotDePasse().equals(clientValue.getMotDePasse()) )
{
isPassChanged = true;
}
} catch (FinderException fe) {
bCreation = true;
}
}
// On verifie qu'il n'existe pas un autre Client avec cet email
if ( clientValue.getEMail()!=null && !"".equalsIgnoreCase(clientValue.getEMail()) )
{
String email = clientValue.getEMail();
ClientLocal emailExistsClient;
Collection candidats;
try {
candidats = cliLocHome.findByEmail(email);
Iterator it = candidats.iterator();
boolean emailExists = false;
while (it.hasNext())
{
emailExistsClient = (ClientLocal)it.next();
if (bCreation) // Si c'est une creation, l'autre est forc�ment pas lui
emailExists=true;
else if (!emailExistsClient.getLogin().equals(clientValue.getLogin())) // Sinon, on regarde si c'est lui via le login
emailExists=true;
if (emailExists)
{
logger.error("Il existe deja un client avec l'email " + email + " : " + emailExistsClient.getLogin());
throw new RuntimeException("Il existe deja un client avec l'email " + email + " : " + emailExistsClient.getLogin());
//return null;
}
}
} catch (FinderException e) {
// Si rien trouv�, c'est Ok
}
}
// Si c'est un nouveau, on le cr�e
if (bCreation)
{
try {
clientValue.setLogin(generateLoginFromName(clientValue.getName()));
cliLoc = cliLocHome.create(clientValue.getName(),
clientValue.getPrenom(),
clientValue.getLogin());
cliLoc.setCreated(Boolean.TRUE);
} catch (CreateException e) {
logger.error("Impossible de cr�er le Client",e);
throw new RuntimeException("Impossible de cr�er le Client");
// return null;
}
if (clientValue.getMotDePasse()==null || clientValue.getMotDePasse().length()==0)
{
clientValue.setMotDePasse("xxx");
}
// On cherche la commande cmdMail � utiliser pour cr��er le compte Unix
cmdAdduser = getConfig("CmdAdduser");
if (cmdAdduser==null) {
cmdAdduser = "echo No cmdAdduser - Create %%";
}
// On cr�e le compte Unix via CmdMail
CmdMailCreate(cmdMailRequester,
"Cr�ation Client " + clientValue.getLogin(),
"cmd",cmdAdduser.replaceAll("%%",clientValue.getLogin()),
cmdPassword);
// Cr�ation du compte Mysql
// On cherche la commande cmdMail � utiliser pour cr��er le compte MySql
String cmdAddMysqlUser=getConfig("CmdAddMysqlUser");
if (cmdAddMysqlUser==null) {
cmdAddMysqlUser = "echo No cmdAddMysqlUser - Create Mysql User %%";
}
// On cr�e le compte Unix via CmdMail
CmdMailCreate("OpenHRA",
"Cr�ation User MySql " + clientValue.getLogin(),
"cmd",cmdAddMysqlUser.replaceAll("%%1",clientValue.getLogin())
.replaceAll("%%2", clientValue.getMotDePasse()),
cmdPassword);
// Avixo suite � cr�ation du client
if (clientValue.getEMail()!=null
&& clientValue.getEMail().contains("@") )
{
Javixo4OpenHRA avis = new Javixo4OpenHRA();
String CFG_ModeleOpenHRANewClient,
CFG_MSWSignature;
CFG_ModeleOpenHRANewClient = getConfig("ModeleOpenHRANewClient");
CFG_MSWSignature = getConfig("MSWSignature");
avis.setEmail( clientValue.getEMail() );
avis.setRefExt("CLI" + clientValue.getLogin());
if (avis.getRefExt().length()>15) {
avis.setRefExt(avis.getRefExt().substring(0,12));
}
String cliId="";
if ((clientValue.getPrenom()!=null) && (!clientValue.getPrenom().equals("")))
cliId=clientValue.getPrenom() + " ";
cliId+=clientValue.getName();
avis.setMessage(cliId + ";;;" + clientValue.getLogin());
avis.setModele(CFG_ModeleOpenHRANewClient);
avis.setSignature(CFG_MSWSignature);
String ret = avis.send();
logger.debug("Javixo : " + ret);
}
} else {
cliLoc.setCreated(Boolean.FALSE);
cliLoc.setUpdated(Boolean.TRUE);
}
cliLoc.setClientValue(clientValue);
// Changement mot de passe
if (( bCreation || isPassChanged )
&& cliLoc.getMotDePasse()!=null
&& !cliLoc.getMotDePasse().equals("xxx") /* Mot de passe temp */
)
{
// On cherche la commande cmdMail � utiliser pour cr��er le compte MySql
String cmdChgMysqlPass=getConfig("CmdChgMysqlPass");
if (cmdChgMysqlPass==null) {
cmdChgMysqlPass = "echo No cmdAddMysqlUser - Change Mdp Mysql User %%";
}
// On cr�e le compte Unix via CmdMail
CmdMailCreate("OpenHRA",
"Changement Mot de passe MySql " + cliLoc.getLogin(),
"cmd",cmdChgMysqlPass.replaceAll("%%1",cliLoc.getLogin())
.replaceAll("%%2", cliLoc.getMotDePasse()),
cmdPassword);
// Unix
String cmdChgPass=getConfig("CmdChgPass");
if (cmdChgPass==null) {
cmdChgPass = "echo No cmdChgPass - Change Mdp User %%";
}
// On modifie le compte Unix via CmdMail
CmdMailCreate("OpenHRA",
"Changement Mot de passe " + cliLoc.getLogin(),
"cmd",cmdChgPass.replaceAll("%%1",cliLoc.getLogin())
.replaceAll("%%2", cliLoc.getMotDePasse()),
cmdPassword);
// JAvixo changement mot de passe
if (cliLoc.getEMail()!=null
&& cliLoc.getEMail().contains("@") )
{
//Javixo avis = new Javixo();
Javixo4OpenHRA avis = new Javixo4OpenHRA();
String //CFG_EndPoint = getConfig("AvixoEndPoint"),
cfg_ModeleOpenHRAMdpChanged = getConfig("ModeleCRASMdpChanged"),
CFG_MSWSignature = getConfig("MSWSignature");
avis.setEmail( cliLoc.getEMail() );
avis.setRefExt("CLI" + cliLoc.getLogin());
if (avis.getRefExt().length()>15)
{
avis.setRefExt(avis.getRefExt().substring(0,12));
}
// cliId
String cliId="";
if ((cliLoc.getPrenom()!=null) && (!cliLoc.getPrenom().equals("")))
cliId=cliLoc.getPrenom() + " ";
cliId+=cliLoc.getName();
avis.setMessage(cliId + ";;;" + cliLoc.getMotDePasse());
avis.setModele(cfg_ModeleOpenHRAMdpChanged);
avis.setSignature(CFG_MSWSignature);
//avis.setEndPoint(CFG_EndPoint);
String ret = avis.send();
if (ret!=null)
logger.debug("ClientGeneratePass - Javixo : " + ret);
else
{
logger.error("ClientGeneratePass - Javixo - ERROR");
//return false;
}
//System.out.println(ret);
}
}
return clientValue.getLogin();
}
public String getConfig(String key) {
try {
ConfigLocalHome ch = ConfigUtil.getLocalHome();
ConfigLocal cfg = ch.findByPrimaryKey(key);
return cfg.getConfigString();
} catch (NamingException e) {
logger.error("getConfig",e);
e.printStackTrace();
} catch (FinderException e) {
logger.error("Config : " + key + " non d�fini !");
} catch (Exception e) {
logger.error("Erreur",e);
}
return null;
}
/**
* Liste les sites
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de SiteValue
*
*/
public Collection SitesList() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = SiteUtil.getLocalHome().findAll();
Iterator it = coll.iterator();
while (it.hasNext()) {
SiteLocal ste = (SiteLocal) it.next();
SiteValue stedata = ste.getSiteValue();
result.add(stedata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Sauve un site<br>
* Ajout ou modification
* @ejb.interface-method view-type = "remote"
* @return boolean indiquant la r�ussite de l'op�ration
*
*/
public boolean SiteSave(com.calexo.openhra.interfaces.ejb.SiteValue siteValue) {
SiteLocal steLoc = null;
SiteLocalHome steLocHome = null;
boolean bCreation = false;
if (siteValue.getId()== null || "".equals(siteValue.getId())) {
logger.error("Site Save - Id non pr�cis�");
return false;
}
try {
steLocHome = SiteUtil.getLocalHome();
} catch (NamingException ne) {
throw new EJBException(ne.getMessage());
}
// On verifie que le DocRoot n'est pas deja utilis�
if ( siteValue.getDocRoot()!=null && !"".equalsIgnoreCase(siteValue.getDocRoot()) )
{
String docRoot = siteValue.getDocRoot();
SiteLocal existsSite;
Collection candidats;
try {
candidats = steLocHome.findByDocRoot(docRoot);
Iterator it = candidats.iterator();
while (it.hasNext())
{
existsSite = (SiteLocal)it.next();
if (!existsSite.getId().equals(siteValue.getId())) // On regarde si c'est lui via l'Id
{
logger.error("Il existe deja un site avec le DocRoot " + docRoot + " : " + existsSite.getId());
return false;
}
}
} catch (FinderException e) {
// Si rien trouv�, c'est OK, on continue
}
}
// On verifie que l'UrlPrincipale n'est pas deja utilis�e
if ( siteValue.getUrlPrincipale()!=null && !"".equalsIgnoreCase(siteValue.getUrlPrincipale()) )
{
String urlPrinc = siteValue.getUrlPrincipale();
SiteLocal existsSite;
Collection candidats;
try {
candidats = steLocHome.findByUrlPrincipale(urlPrinc);
Iterator it = candidats.iterator();
while (it.hasNext())
{
existsSite = (SiteLocal)it.next();
if (!existsSite.getId().equals(siteValue.getId())) // On regarde si c'est lui via l'Id
{
logger.error("Il existe deja un site avec l'UrlPrincipale " + urlPrinc + " : " + existsSite.getId());
return false;
}
}
} catch (FinderException e) {
// Si rien trouv�, c'est Ok
}
}
// On trouve le site existant, sinon on le cr�e
try {
steLoc = steLocHome.findByPrimaryKey(siteValue.getId());
} catch (FinderException fe) {
try { // Nouveau
steLoc = steLocHome.create(siteValue.getId());
bCreation=true;
} catch (CreateException ce) {
throw new EJBException(ce.getMessage());
}
} catch (Exception e) {
logger.error("Erreur dans SiteSave(Site : findByPrimaryKey (" + siteValue.getId() +")",e);
return false;
}
if (bCreation)
{
// Avis de creation du site
// Impossible car Client pas connu... -> Associate
}
logger.debug("setSiteValue..." + siteValue.getId());
//logger.debug("setSiteValue..." + siteValue.getDirectoryIndex());
steLoc.setSiteValue(siteValue);
if (steLoc.getDateDebut() == null)
steLoc.setDateDebut( new Date() );
return true;
}
/**
* Recherche un site par son Id
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return SiteValue ou NULL
*
*/
public SiteValue SiteSearchById(String pId) {
SiteValue result = null;
try {
SiteLocal steLoc = SiteUtil.getLocalHome().findByPrimaryKey(pId);
if (steLoc == null) {
throw new FinderException("steLoc null");
}
result = steLoc.getSiteValue();
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return result;
}
/**
* Associe un site � un client
* @return Ancien ClientLocal si existant
* @ejb.interface-method view-type = "remote"
*
*/
public ClientValue AssociateClientSite(String pClient_id, String pSite_id) {
ClientLocal pClient = null;
SiteLocal pSite = null;
logger.debug("AssociateClientSite - Associe " + pSite_id + " avec " + pClient_id);
// Recherche du site par Id
try {
pSite = SiteUtil.getLocalHome().findByPrimaryKey(pSite_id);
} catch (FinderException e) {
pSite=null;
logger.error(pSite_id + " n'est pas un id de site valable");
} catch (NamingException e) {
logger.error("Exception : ", e);
e.printStackTrace();
}
// Recherche du client par Id (Login)
try {
pClient = ClientUtil.getLocalHome().findByPrimaryKey(pClient_id);
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un id de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
// Recherche du client par NomPrenom
if (pClient==null)
{
try {
Collection clis = ClientUtil.getLocalHome().findByNamePrenom(pClient_id);
Iterator it = clis.iterator();
if (it.hasNext())
{
pClient = (ClientLocal)it.next();
if (it.hasNext()) // Si result > 1, rien
{
pClient = null;
logger.error(pClient_id + " correspond � plusieurs NomPrenom de clients");
}
}
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un NomPrenom de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
}
// Recherche du client par eMail
if (pClient==null)
{
try {
Collection clis = ClientUtil.getLocalHome().findByEmail(pClient_id);
Iterator it = clis.iterator();
if (it.hasNext())
{
pClient = (ClientLocal)it.next();
if (it.hasNext()) // Si result > 1, rien
{
pClient = null;
logger.error(pClient_id + " correspond � plusieurs emails de clients");
}
}
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un Email de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
}
if (pClient==null)
{
logger.error( "AssociateClientSite - Client non trouv�");
return null;
}
if (pSite==null)
{
logger.error( "AssociateClientSite - Site non trouv�");
return null;
}
// CmdMail creation repertoire
// TODO CmdAddSite relanc� � chaque fois... pas bloquant, mais bof...
String cmdAddSite = getConfig("CmdAddSite");
if (cmdAddSite==null) {
cmdAddSite = "echo No cmdAddSite - Create %%";
}
CmdMailCreate(cmdMailRequester,
"Cr�ation Repertoire site " + pSite.getDocRoot(),
"cmd",cmdAddSite.replaceAll("%%1",pClient.getLogin())
.replaceAll("%%2", pSite.getDocRoot()) ,
cmdPassword);
// JAvixo
if (pClient.getEMail()!=null && pSite.getClient()==null) // Nouveau
{
Javixo4OpenHRA avis = new Javixo4OpenHRA();
avis.setEmail( pClient.getEMail() );
avis.setRefExt( "CLI" + pClient.getLogin());
//avis.setEndPoint( getConfig("AvixoEndPoint"));
String sDirIndex;
if ((pSite.getDirectoryIndex()==null) || ("".equals(pSite.getDirectoryIndex())) )
sDirIndex = getConfig("HTTP_Default_DirIndex");
else
sDirIndex = pSite.getDirectoryIndex();
String sServAlias;
if ( (pSite.getServerAliases()==null) || ("".equals(pSite.getServerAliases())) )
sServAlias = "";
else
sServAlias = " et " + pSite.getServerAliases();
avis.setMessage( pClient.getPrenom() + " " + pClient.getName() + ";;;"
+ pSite.getId() + ";;;"
+ pSite.getUrlPrincipale() + ";;;"
+ sServAlias + ";;;"
+ sDirIndex + ";;;"
+ getConfig("HTTP_Site_Suffix"));
avis.setModele( getConfig("ModeleOpenHRASite"));
avis.setSignature( getConfig("MSWSignature") );
logger.debug( avis.send() );
}
ClientLocal exCli = null;
if (pSite != null) {
exCli = pSite.getClient();
pSite.setClient(pClient);
}
if (exCli==null)
return null;
return exCli.getClientValue();
}
/**
* Retrouve les sites d'un client donn�
* @return Collection de SiteValue du Client
* @ejb.interface-method view-type = "remote"
*/
public Collection getClientSites(String pClient_id) {
ClientLocal pClient = null;
Collection ret = new HashSet();
SiteValue siteValue;
try {
pClient = ClientUtil.getLocalHome().findByPrimaryKey(pClient_id);
Iterator sites = pClient.getSites().iterator();
while (sites.hasNext()) {
siteValue = ((SiteLocal) sites.next()).getSiteValue();
ret.add(siteValue);
}
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(ret);
return set;
}
/**
* Retrouve les bases d'un client donn�
* @return Collection de BaseDonneesValue du Client
* @ejb.interface-method view-type = "remote"
*/
public Collection getClientBasesDonnees(String pClient_id) {
ClientLocal pClient = null;
Collection ret = new HashSet();
BaseDonneesValue baseValue;
try {
pClient = ClientUtil.getLocalHome().findByPrimaryKey(pClient_id);
Iterator bases = pClient.getBasesDonnees().iterator();
while (bases.hasNext()) {
baseValue = ((BaseDonneesLocal) bases.next()).getBaseDonneesValue();
ret.add(baseValue);
}
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(ret);
return set;
}
/**
* Ajoute un mois de validit� au site
* @return Collection de SiteValue du Client
* @ejb.interface-method view-type = "remote"
* @return Nouvelle date d'expiration du site
*
*/
public Date SiteAddMonths(String pSiteId, Integer pNbMonths) {
SiteLocal pSite = null;
Date newFinDate=null;
Calendar newFinDateCal= new java.util.GregorianCalendar();
try {
pSite = SiteUtil.getLocalHome().findByPrimaryKey(pSiteId);
newFinDateCal.setTime(pSite.getDateFin());
newFinDateCal.add(Calendar.MONTH,pNbMonths.intValue());
newFinDate =newFinDateCal.getTime();
pSite.setDateFin(newFinDate);
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return newFinDate; // NULL si Erreur
}
/**
* Liste les CmdMails.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de CmdMailValue
*/
public Collection CmdMailList() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = CmdMailUtil.getLocalHome().findAll();
Iterator it = coll.iterator();
while (it.hasNext()) {
CmdMailLocal cm = (CmdMailLocal) it.next();
CmdMailValue cmdata = cm.getCmdMailValue();
result.add(cmdata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Annule un CmdMail
* @ejb.interface-method view-type = "remote"
*/
public void CmdMailCancel(Integer pId) {
try {
CmdMailLocal cm = CmdMailUtil.getLocalHome().findByPrimaryKey(pId);
cm.setCancelled(Boolean.TRUE);
System.out.println("Gestion - CmdMailsCancel : " + pId.toString());
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}
/**
* Cr�e un nouveau CmdMail, sans n�cessit� de mot de passe<br/>
* pRequester=Requester par d�faut<br/>
* pCmd=cmd<br/>
* @ejb.interface-method view-type = "remote"
* @param String pMotif
* @param String pArg
*/
public void CmdMailCreate(String pMotif, String pArg) {
CmdMailCreate(cmdMailRequester, pMotif, "cmd", pArg, cmdPassword);
}
/**
* Cr�e un nouveau CmdMail
* @ejb.interface-method view-type = "remote"
* @param String pRequester
* @param String pMotif
* @param String pCmd
* @param String pArg
* @param String pPassword
* @throws OpenHRAException
*/
public void CmdMailCreate(String pRequester, String pMotif, String pCmd, String pArg, String pPassword) {
try {
CmdMailLocalHome cmh = CmdMailUtil.getLocalHome();
CmdMailLocal newCM = cmh.create(pRequester,pMotif,pCmd, pArg, pPassword);
if (CmdMailCheckPassword(pPassword).equals(Boolean.FALSE)) {
newCM.setCancelled(Boolean.TRUE);
System.out.println("Gestion - CmdMailsCreate : Mauvais Password");
}
System.out.println("Gestion - CmdMailsCreate : " + newCM.getId());
} catch (CreateException e) {
e.printStackTrace();
try {
throw new OpenHRAException();
} catch (OpenHRAException e1) {
e1.printStackTrace();
}
} catch (NamingException e) {
e.printStackTrace();
try {
throw new OpenHRAException();
} catch (OpenHRAException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
/**
* Verification du mot de passe CmdMail
* @ejb.interface-method view-type = "remote"
* @return TRUE s'il s'agit du bon
*/
public Boolean CmdMailCheckPassword(String pPassword) {
//return new Boolean ();
return Boolean.valueOf(pPassword.equals(cmdPassword));
}
/**
* Liste les �l�ments de Compta
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de ComptaValue
*
*/
public Collection ComptaList() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = ComptaUtil.getLocalHome().findAll();
Iterator it = coll.iterator();
while (it.hasNext()) {
ComptaLocal cpt = (ComptaLocal) it.next();
ComptaValue cptdata = cpt.getComptaValue();
result.add(cptdata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
return result;
}
/**
* Cr�e un �l�ment Compta
* @ejb.interface-method view-type = "remote"
*/
public void ComptaCreate(Float pMontant,
String pMoyenP,
String pCodeP,
String pComm,
String pClientLogin,
String pSiteId) {
ClientLocal pClient=null;
SiteLocal pSite=null;
try {
ComptaLocalHome cph = ComptaUtil.getLocalHome();
ComptaLocal newCpt = cph.create(pMontant,pMoyenP);
newCpt.setCodePaiement(pCodeP);
newCpt.setCommentaire(pComm);
if (pSiteId!=null)
{
pSite = SiteUtil.getLocalHome().findByPrimaryKey(pSiteId);
newCpt.setSite(pSite);
}
if (pClientLogin!=null)
{
pClient = ClientUtil.getLocalHome().findByPrimaryKey(pClientLogin);
newCpt.setClient(pClient);
}
System.out.println("Gestion - ComptaCreate : " + newCpt.getId());
if (pClient!=null)
System.out.println("Gestion - ComptaCreate associ� avec Client " + pClient.getLogin());
} catch (CreateException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
}
/**
* Liste les bases de donnees.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Collection de BaseDonneesValue
*/
public Collection BasesDonneesList() {
Collection coll = null;
Collection result = new HashSet();
try {
coll = BaseDonneesUtil.getLocalHome().findAll();
final Iterator it = coll.iterator();
while (it.hasNext()) {
final BaseDonneesLocal base = (BaseDonneesLocal) it.next();
final BaseDonneesValue basedata = base.getBaseDonneesValue();
result.add(basedata);
}
} catch (FinderException e) {
result = null;
} catch (NamingException e) {
result = null;
}
Set set = new TreeSet ( new OpenHRAComp());
set.addAll(result);
return set;
}
/**
* Sauvegarde un objet Base de donn�es.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Nom de la base sauvegard�e - <i>null</i> si pas modifi�e
* @since Bug90, SVN497
*/
public String BaseDonneesSave ( BaseDonneesValue bddValue )
{
BaseDonneesLocal bdd;
try {
bdd = BaseDonneesUtil.getLocalHome().findByPrimaryKey(bddValue.getNom());
logger.debug("Ancien comm : " + bdd.getCommentaire());
logger.debug("Nouvo comm : " + bddValue.getCommentaire());
bdd.setCommentaire(bddValue.getCommentaire());
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return bddValue.getNom();
}
/**
* Cr�e une base de donnees.<br>
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return Nom de la base cr��e - <i>null</i> si pas cr��e
*/
public String BaseDonneesCreate( BaseDonneesValue bddValue )
{
// Si pas d'etat -> etat "A Cr�er"
if (bddValue.getEtat()==null
|| "".equals(bddValue.getEtat()))
{
logger.debug("BaseDonneesCreate - Etat set'� A");
bddValue.setEtat("A");
}
else
logger.debug("BaseDonneesCreate - Etat : " + bddValue.getEtat());
// Si pas de nom et/ou pas de client, return null
if (bddValue.getNom()==null
|| bddValue.getClientValue()==null
)
{
logger.error("BaseDonneesCreate - Nom ou Client null");
return null;
}
// Persistance
BaseDonneesLocal bdd;
try {
bdd = BaseDonneesUtil.getLocalHome().create(bddValue.getNom());
//bdd.setBaseDonnees(bddValue);
AssociateClientBaseDonnees(bddValue.getClientValue().getLogin(), bddValue.getNom());
bdd.setCommentaire(bddValue.getCommentaire());
bdd.setEtat(bddValue.getEtat());
bdd.setQuota(bddValue.getQuota());
bdd.setQuotaUtilise(bddValue.getQuotaUtilise());
} catch (NamingException e) {
logger.error("BaseDonneesCreate",e);
return null;
} catch (CreateException e) {
logger.error("BaseDonneesCreate",e);
return null;
}
if ((bdd != null) && ("A".equals(bdd.getEtat())) && (bdd.getNom().equals(bddValue.getNom())))
{
// CmdMail Creation Base
logger.debug("BaseDonneesCreate - CmdMail Creation Base");
String cmdAddMysqlDb = getConfig("CmdAddMysqlDb");
if (cmdAddMysqlDb==null) cmdAddMysqlDb = "ERROR";
CmdMailCreate(cmdMailRequester,
"Cr�ation BaseDonnees " + bddValue.getNom(),
"cmd",cmdAddMysqlDb.replaceAll("%%1",bddValue.getNom()).replaceAll("%%2",bddValue.getClientValue().getLogin()),
cmdPassword);
// CmdMail Grant
/*logger.debug("BaseDonneesCreate - CmdMail Grant");
String cmdAddMysqlDbGrant = getConfig("CmdAddMysqlDbGrant");
if (cmdAddMysqlDbGrant==null) cmdAddMysqlDbGrant = "ERROR";
CmdMailCreate("OpenHRA",
"Cr�ation BaseDonnees - Grant " + bddValue.getNom(),
"cmd",cmdAddMysqlDbGrant.replaceAll("%%b",bddValue.getNom()).replaceAll("%%c", bddValue.getClientValue().getLogin()),
password);*/
// Desormais compris dans cmdAddMysqlDb
bdd.setEtat("C");
// Avixo
if ( bddValue.getClientValue().getEMail()!=null )
{
logger.debug("BaseDonneesCreate - Javixo - " + bddValue.getClientValue().getEMail());
Javixo4OpenHRA avis = new Javixo4OpenHRA();
avis.setEmail(bddValue.getClientValue().getEMail());
avis.setModele(getConfig("ModeleOpenHRANewBdd"));
avis.setSignature(getConfig("MSWSignature"));
avis.setMessage( bddValue.getClientValue().getPrenom() + " " + bddValue.getClientValue().getName() + ";;;" + bddValue.getNom());
//avis.setEndPoint(getConfig("AvixoEndPoint"));
avis.setRefExt("CLI" + bddValue.getClientValue().getLogin());
logger.debug( avis.send() );
}
logger.debug("BaseDonneesCreate - retourne " + bddValue.getNom());
return bddValue.getNom();
}
return null;
}
/**
* Recherche une BaseDonnees par son nom
* @ejb.interface-method view-type = "remote"
* @ejb.facade-method
* @return BaseDonneesValue ou <i>NULL</i>
*
*/
public BaseDonneesValue BaseDonneesSearchById(String pId) {
BaseDonneesValue result = null;
try {
BaseDonneesLocal bddLoc = BaseDonneesUtil.getLocalHome().findByPrimaryKey(pId);
if (bddLoc == null) {
throw new FinderException("bddLoc null");
}
result = bddLoc.getBaseDonneesValue();
} catch (FinderException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return result;
}
/**
* Associe une AssociateClientBaseDonnees � un client
* @return Ancien ClientLocal si existant
* @ejb.interface-method view-type = "remote"
*
*/
public ClientValue AssociateClientBaseDonnees(String pClient_id, String pBddNom) {
ClientLocal pClient = null;
BaseDonneesLocal pBdd = null;
logger.debug("AssociateClientBaseDonnees - Associe " + pBddNom + " avec " + pClient_id);
// Recherche du site par Id
try {
pBdd = BaseDonneesUtil.getLocalHome().findByPrimaryKey(pBddNom);
} catch (FinderException e) {
pBdd=null;
logger.error(pBddNom + " n'est pas un nom de BaseDonnees valable");
} catch (NamingException e) {
logger.error("Exception : ", e);
e.printStackTrace();
}
// Recherche du client par Id (Login)
try {
pClient = ClientUtil.getLocalHome().findByPrimaryKey(pClient_id);
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un id de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
// Recherche du client par NomPrenom
if (pClient==null)
{
try {
Collection clis = ClientUtil.getLocalHome().findByNamePrenom(pClient_id);
Iterator it = clis.iterator();
if (it.hasNext())
{
pClient = (ClientLocal)it.next();
if (it.hasNext()) // Si result > 1, rien
{
pClient = null;
logger.error(pClient_id + " correspond � plusieurs NomPrenom de clients");
}
}
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un NomPrenom de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
}
// Recherche du client par eMail
if (pClient==null)
{
try {
Collection clis = ClientUtil.getLocalHome().findByEmail(pClient_id);
Iterator it = clis.iterator();
if (it.hasNext())
{
pClient = (ClientLocal)it.next();
if (it.hasNext()) // Si result > 1, rien
{
pClient = null;
logger.error(pClient_id + " correspond � plusieurs emails de clients");
}
}
} catch (FinderException e) {
logger.trace(pClient_id + " n'est pas un Email de client valable");
pClient=null;
} catch (NamingException e) {
e.printStackTrace();
}
}
if (pClient==null)
logger.error( "AssociateClientBaseDonnees - Client non trouv�");
if (pBdd==null)
logger.error( "AssociateClientBaseDonnees - BaseDonnees non trouv�e");
ClientLocal exCli = null;
if (pBdd != null) {
exCli = pBdd.getClient();
pBdd.setClient(pClient);
}
if (exCli==null)
return null;
return exCli.getClientValue();
}
}