private static String declareExportBIServiceParametersClassDeclaration() {
    StringBuilder sb = new StringBuilder();
    sb.append("/**\n");
    sb.append(" * Description :\n");
    sb.append("* Donnez une description textuelle du service fourni par cette classe.\n");
    sb.append("*\n");
    sb.append("* <TABLE>\n");
    sb.append("*   <TR>\n");
    sb.append("*     <TD><B>Attributs SVN :</B></TD>\n");
    sb.append("*     <TD>&nbsp;</TD>\n");
    sb.append("*   </TR>\n");
    sb.append("*   <TR>\n");
    sb.append("*     <TD><I>Nom du fichier :</I></TD>\n");
    sb.append("*     <TD>$HeadURL: http://svn.lyon.fr.sopra/svnulis/svn/ulis_test/repository/Refonte/ULISNG/ULISNG-MODULES/branches/ULISNG-N1-LOTA-GLCO-AC-CA-4/src/main/java/sopra/immobilier/business/ULIS/referentiel/OP/ExportBIESIStockCreateService.java $</TD>\n");
    sb.append("*   </TR>\n");
    sb.append("*   <TR>\n");
    sb.append("*     <TD><I>Modifié le :</I></TD>\n");
    sb.append("*     <TD>$Date: 2011-05-16 13:57:05 +0200 (lun, 16 may 2011) $</TD>\n");
    sb.append("*   </TR>\n");
    sb.append("* </TABLE>\n");
    sb.append("*\n");
    sb.append("* @version : $Revision: 25653 $\n");
    sb.append("* @author  : SOPRA Group - $Author: gthomazeau $\n");
    sb.append("*\n");
    sb.append("*/\n");
    sb.append("public static class ExportBI"+code+"CreateServiceParameters extends AbstractLanceurExportBIServiceParameters {\n");
    sb.append("\n");
    sb.append("/** Version extraite du gestionnaire de configuration */\n");
    sb.append("@SuppressWarnings(\"hiding\")\n");
    sb.append("public static final String CLASS_VERSION = \"$Revision: 25653 $\";    \n");
    sb.append("\n");
    sb.append("/** Nom du critère donnant accès au compteur */\n");
    sb.append("protected static final String "+codeTable.toUpperCase()+"_CPT_PARAMETER_NAME = \""+codeTable.toUpperCase()+"_CPT\";\n");
    sb.append("\n");
    sb.append("/**\n");
    sb.append("* @return la valeur positionnée au sein de la propriété\n");
    sb.append("*/\n");
    sb.append("public String get"+codeTable.toUpperCase()+"_CPT_PARAMETER_NAME() {\n");
    sb.append("return "+codeTable.toUpperCase()+"_CPT_PARAMETER_NAME;\n");
    sb.append("}    \n");
    sb.append("\n");
    sb.append("/**\n");
    sb.append("* @return la valeur positionnée au sein de la propriété\n");
    sb.append("*/    \n");
    sb.append("public Integer get"+codeTable.toUpperCase()+"_CPT() {\n");
    sb.append("return getParameterValueAsInteger("+codeTable.toUpperCase()+"_CPT_PARAMETER_NAME);\n");
    sb.append("}\n");
    sb.append("\n");
    sb.append("/**\n");
    sb.append("* Crée une nouvelle façade sur les paramètre permettant  de lancer une édition\n");
    sb.append("* @param param paramètre génériques devant être masqués par cette façade\n");
    sb.append("*/\n");
    sb.append("protected ExportBI"+code+"CreateServiceParameters(ServiceParameters param) {\n");
    sb.append("super(param);\n");
    sb.append("}    \n");
    sb.append("} \n");
    sb.append("\n");
    sb.append("/**\n");
    sb.append("* La liste des propriété à ne pas exporté bien qu'elles soient affichées.\n");
    sb.append("* Doit être surchargée par le développeur s'il souhaite filtrer les donnée à exporter\n");
    sb.append("* @return La liste des propriété à ne pas exporté bien qu'elles soient affichées\n");
    sb.append("*/\n");
    sb.append("@Override\n");
    sb.append("protected List<String> getParameterListToFilter() {\n");
    sb.append("\n");
    sb.append("      //retourne la liste des noms des données métier à ne pas exporter malgré leur affichage    \n");
    sb.append("List<String> listeFilter = new ArrayList<String>();\n");
    for(Proxy proxy:listeProxy){
      if (listeChampExport!=null && listeChampExport.size()>0){
      for(String champExport:listeChampExport){
        if (!listeChampExport.contains(proxy.getNom())){
          sb.append("listeFilter.add(\""+proxy.getNom()+"\");\n");
        }
      }
      }else{
        sb.append("\\supprimer les champs present dans l'export\n");
        sb.append("listeFilter.add(\""+proxy.getNom()+"\");\n");
      }
    }
    sb.append("listeFilter.add(\"YYY\");\n");
    sb.append("\n");
    sb.append("return listeFilter;\n");
    sb.append("}\n");
    sb.append("\n");
    sb.append("/**\n");
    sb.append("* Point d'entrée développeur permettant de mettre à jour une donnée venant d'être inséré dans la table de travail.\n");
    sb.append("* @param cnx la connexion\n");
    sb.append("* @param data la donnée qui vient d'être inséré\n");
    sb.append("* @param profileID l'identifiant du profil\n");
    sb.append("* @param cptVal le compteur de la table de travail\n");
    sb.append("* @throws ServiceException en cas d'erreur technique\n");
    sb.append("*/\n");
    sb.append("@Override\n");
    sb.append("protected void completeInsertedData(Connection cnx, \n");
    sb.append("Object data,\n");
    sb.append("String profileID,\n");
    sb.append("ServiceContext context, \n");
    sb.append("int cptVal,Integer rowNum)\n");
    sb.append("throws ServiceException {\n");
    sb.append("\n");
    sb.append("PreparedStatement stmt = null;\n");
    sb.append("ResultSet rs = null;\n");
    sb.append(name+"Proxy proxy = ("+name+"Proxy) data;\n");
    sb.append("\n");
    sb.append("String sql = \"\";\n");
    sb.append("\n");
    sb.append("try{\n");
    sb.append("\n");
    sb.append("if(!sql.equals(\"\")){\n");
    sb.append("String update_statut = \"UPDATE "+codeTable+" SET \" + sql +\n");
    int cpt=0;
    for (String champExport:listeChampExport){
      if (cpt>0){sb.append(" , ");}
      sb.append("\" AND "+champExport+" = \"+ proxy.get"+champExport+"() +\" \" +\n");
      cpt++;
    }
    sb.append("\" WHERE mguti_cod = '\"+ profileID +\"' \" +\n");
    sb.append("\" AND "+codeTable+"_NUM = \"+ rowNum +\n");
    sb.append("\" AND "+codeTable+"_CPT = \"+ cptVal;\n");
    sb.append("\n");
    sb.append("stmt = cnx.prepareStatement(update_statut);\n");
    sb.append("rs = stmt.executeQuery();\n");
    sb.append("}\n");
    sb.append("} \n");
    sb.append("catch (SQLException databaseEx) {\n");
    sb.append("        // Exception soulevée par l'accès à la couche de persistance\n");
    sb.append("ServiceException ioEx = new ServiceException(\"Fatal error while accessing to persistence layer\",\n");
    sb.append("databaseEx);\n");
    sb.append("if (isLoggingError()) {\n");
    sb.append("logError(databaseEx);\n");
    sb.append("logError(ioEx);\n");
    sb.append("}\n");
    sb.append("throw ioEx;     \n");   
    sb.append("}\n");
    sb.append("finally {\n");
    sb.append("        // On ferme l'ensemble des ressources que nous avons ouvertes au sein \n");
    sb.append("        // de la base de données\n");
    sb.append("if (rs != null) {\n");
    sb.append("try {\n");
    sb.append("rs.close();\n");
    sb.append("}\n");
    sb.append("catch (SQLException ignoreEx) {}\n");
    sb.append("rs = null;\n");
    sb.append("}\n");
    sb.append("        //\n");
    sb.append("if (stmt != null) {\n");
    sb.append("try {\n");
    sb.append("stmt.close();\n");
    sb.append("}\n");
    sb.append("catch (SQLException ignoreEx) {}\n");
    sb.append("stmt = null;\n");
    sb.append("}\n");
    sb.append("}   \n"); 
    sb.append("}\n");
    return sb.toString();
  }