le code est léger :
public class CourrierSGSEBoCourrier extends ObjectDB {
private static final long serialVersionUID = 1L;
public void afficheSuspens(){
AppLog.info(getClass(), " la fonction afficheSuspens a été appelée", null , getGrant());
this.setFieldFilter("CourrierSGSEBoCourrierButLibelle", "SUSP");
this.setFieldFilter("CourrierSGSEBoCourrierRechercheDate", "non");
}
@Override
public void initUpdate(){
setToken();
}
@Override
public String postSave() {
AppLog.info(getClass(), " postSave a été appelée", null , getGrant());
boolean sauvegarde = false;
//renseigne la date de fin si le courrier passe à TERMINE
if (this.getFieldValue("CourrierSGSEBoCourrierEnOrdre").equals("TER") && this.getFieldValue("CourrierSGSEBoCourrierDateSuspens").equals("") ) {
AppLog.info(getClass(), "MAJ de la date de fin", null, getGrant());
this.getField("CourrierSGSEBoCourrierDateSuspens").setValue(Tool.getCurrentDatetime());
sauvegarde = true;
}
//Efface la date de fin si le statut est ACTIF ou EN SUSPENS
if ( (this.getFieldValue("CourrierSGSEBoCourrierEnOrdre").equals("ACT") || this.getFieldValue("CourrierSGSEBoCourrierEnOrdre").equals("ENS") ) && !this.getFieldValue("CourrierSGSEBoCourrierDateSuspens").equals("") ) {
AppLog.info(getClass(), "Effacement de la date de fin", null, getGrant());
this.getField("CourrierSGSEBoCourrierDateSuspens").setValue("");
sauvegarde = true;
}
//met le courrier automatiquement à EN SUSPENS si le but du courrier est REPS, REPD ou REPMUN et que l'état est ACTIF
if (this.getFieldValue("CourrierSGSEBoCourrierEnOrdre").equals("ACT") && (this.getFieldValue("CourrierSGSEBoCourrierButLibelle").equals("REPD") || this.getFieldValue("CourrierSGSEBoCourrierButLibelle").equals("REPS") || this.getFieldValue("CourrierSGSEBoCourrierButLibelle").equals("REPMUN") )) {
AppLog.info(getClass(), "MAJ statut actif vers en suspens", null, getGrant());
this.getField("CourrierSGSEBoCourrierEnOrdre").setValue("ENS");
sauvegarde = true;
}
// Sauvegarde si au moins une modification a été faite
if (sauvegarde) {
try {
getTool().validateAndSave();
} catch (SaveException | ValidateException e) {
AppLog.error(e, getGrant());
}
}
return super.postSave();
}
public void setToken(){
/********************************************************
Envoi d'une demande de token pour accèder à la GED. Le script paramètre une demande GET via une url (Oauth 2.0, HEADER, Bearer numéro du bearer)
Le n° du bearer est transmis par DBAS, il est propre à chaque environnement.
L'url est transmise par DBAS, elle est propre à chaque environnement
Ces deux informations sont dans des paramètres systèmes qui sont récupérés ci-dessous
**********************************************************/
AppLog.info(getClass(), " le setToken a été appelé", null , getGrant());
BufferedReader reader = null;
ObjectDB ent = this; //travaillera sur l'objet à l'écran
try {
String paramenv = getGrant().getParameter("VDL_ENV");
String env="";
if (paramenv.equals("-prod"))
env="";
else
env= paramenv;
AppLog.info(getClass(), "Environnement de travail :::::: ", env , getGrant());
AppLog.info(getClass(), " Variable Environnement de travail :::::: ", paramenv , getGrant());
// 1re ETAPE : récupérer le bearer et l'url pour l'obtention du token
//les informations sont stockées dans les paramètres système
String bearer = (getGrant().getParameter("VDL_BEARER_COURRIERSGSE"+paramenv)); // récupération de l'url dans le paramètre système
AppLog.info(getClass(), "BEARER :::::: ", bearer , getGrant());
AppLog.info(getClass(), "BEARER 2 :::::: ", "VDL_BEARER_COURRIERSGSE"+paramenv , getGrant());
//String bearer = "toto"; // récupération de l'url dans le paramètre système
URL url = new URL (getGrant().getParameter("VDL_GEDTOKEN_COURRIERSGSE_URL").replace("{env}", env));// récupération de l'url dans le paramètre système
AppLog.info(getClass(), "url pour le token : " + url, null , getGrant());
AppLog.info(getClass(), "bearer : " + bearer, null , getGrant());
//2e ETAPE : connexion
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
AppLog.info(getClass(), "step 1 " +conn, null , getGrant());
//déclaration HEADER
conn.setRequestProperty("Content-Type","application/json");
//Ajout des informations pour l'authentification Oauth 2.0 soit "Bearer + n°", le n° est le même pour toutes les requêtes et nous est transmis par DBAS
conn.setRequestProperty("Authorization", bearer);
conn.setRequestMethod("GET");
//3e ETAPE : récupération de la réponse
//récupération du statut de la demande : 200 = OK
int responseCode = conn.getResponseCode();
AppLog.info(getClass(), "step 1.1 " +responseCode, null , getGrant());
AppLog.info(getClass(), "step 1.2 " +conn.getInputStream(), null , getGrant());
//récupération du token
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output=null,line=null;
AppLog.info(getClass(), "step 2 " , null , getGrant());
while ((line = in.readLine()) != null) {
output=line;
AppLog.info(getClass(), "step 3 " , null , getGrant());
}
in.close();
AppLog.info(getClass(), "reponse : " + output, null , getGrant());
/**le token est placé dans la rubrique liée au token pour une récupération
dans le javascript pour l'affichage de la GED
**********************************************************
!! ADAPTER LE NOM de l'attribut en fonction de la table */
setFieldValue("CourrierSGSEBoCourrierToken", output);
} catch (Exception e) {
AppLog.error(getClass(), "erreur", "Unable to token", e, getGrant());
}
}
@Override
public void initCreate() {
/** A la création d'une nouvelle fiche, le n° est calculé en tenant compte du dernier n° attribué pour la date du jour.
* Chaque jour il recommence à 1
* La date du jour est automatiquement saisie
* Ces deux valeurs peuvent être surchargées par l'utilisateur
*/
try
{
AppLog.info(getClass(), " le initCreate a été appelé", null , getGrant());
/*Cherche le dernier n° pour la date du jour = la valeur max pour aujourd'hui*/
String sql = "select max(courrier_sgse_courrier_numero) from t_courriersgse_courrier where courrier_sgse_courrier_date_courrier = DATE(NOW())";
long max = this.getGrant().simpleQueryAsLong(sql);
LocalDateTime currentTime = LocalDateTime.now();
LocalDate date1 = currentTime.toLocalDate();
/*Rempli les champs */
this.setFieldValue("CourrierSGSEBoCourrierDateCourrier" , date1);
this.setFieldValue("CourrierSGSEBoCourrierNumero" , max + 1);
// this.setFieldValue("CourrierSGSEBoCourrierButLibelle","ACT");
AppLog.info(getClass(), "nb de rec " + max , null , getGrant());
AppLog.info(getClass(), "date du jour : " + date1, null , getGrant());
AppLog.info(getClass(), "idCourrier : " + this.getFieldValue("CourrierSGSEBoCourrierDateCourrier")+this.getFieldValue("CourrierSGSEBoCourrierNumero"), null , getGrant());
} catch (Exception e) {
AppLog.error(getClass(), "initCreate erreur", null, e, getGrant());
}
}
public String ajouteLigne() {
//boucle sur tous les REC pour mettre à jour la rubrique concerne en remplaçant les " $ par des sauts de lignes
AppLog.info(getClass(), " la fonction ajouteLigne a été appelée", null , getGrant());
//initialise la liste et le tableau
List<String> ids = this.getSelectedIds();
List<String[]> rows = new ArrayList<String[]>();
//AppLog.info(getClass(), " la liste des ids est prête : " + ids, null , getGrant());
//rempli le tableau avec les id des lignes
if( ids!=null && ids.size()>0){
for (int k = 0; k < ids.size(); k++){
if (this.select(ids.get(k))){
rows.add(this.getValues());
}
}
}else{
rows = this.search(false);
AppLog.info(getClass(), "postLoad", "Courrier: " + getInstanceName() +" user: this line is geting the selected values" + rows.size(), null);
}
AppLog.info(getClass(), " la liste des rows est prête : " + rows, null , getGrant());
//déclaration de l'objet
ObjectDB Courrier = getGrant().getTmpObject("CourrierSGSEBoCourrier");
BusinessObjectTool t = new BusinessObjectTool(Courrier);
for (String[] row : rows)
{
Courrier.setValues(row); //précise sur quel row travailler
try{
//AppLog.info(getClass(), " row : " + row[12], null , getGrant());
String ancienconcerne = row[6];//la colonne 12 est le "concerne"
Courrier.setFieldValue("CourrierSGSEBoCourrierConcerne", ancienconcerne.replace(" $ ", "\r\n"));
//AppLog.info(getClass(), " comm concerne 6 : " + ancienconcerne, null , getGrant());
String anciencomm10 = row[10];//la colonne 12 est le "concerne"
Courrier.setFieldValue("CourrierSGSEBoCourrierCommentaire", anciencomm10.replace(" $ ", "\r\n"));
//AppLog.info(getClass(), " comm suivi 10 : " + anciencomm10, null , getGrant());
t.validateAndSave();
}catch(Exception e){
AppLog.warning(getClass(), "refreshData", "Erreur updating Courrier (" + e.getMessage() + ")", e, getGrant());
}
}
return "Correction faite " + " sur " + rows.size() + " courrier-s concernée-s";
}
}
Je n’a i pas l’impression que ça pourrait coincer.