00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 package org.openmobileis.synchro.journal;
00027
00028 import org.openmobileis.common.util.collection.Array;
00029 import org.openmobileis.common.util.log.*;
00030 import org.openmobileis.synchro.openmsp.protocol.Status;
00031
00041 public class JournalManager {
00042 private static final String INTMOKMESSAGE="OK";
00043 private static final String INTMNOKMESSAGE="echec";
00044
00045
00046 public static String STATUS_SYNC_IN_PROGRESS="en cours";
00047 public static String STATUS_OK = "OK";
00048 public static String STATUS_NO_CONTENT = "pas de contenu";
00049 public static String STATUS_PARTIAL_CONTENT = "contenu partiel";
00050 public static String STATUS_WRONG_FORMAT = "erreur:format de fichier incorrecte";
00051 public static String STATUS_UNAUTHORIZED = "erreur d'authentification";
00052 public static String STATUS_NOT_FOUND = "erreur : service non touvé.";
00053 public static String STATUS_AUTHENTIFICATION_REQUIRED = "erreur : authorisation requise.";
00054 public static String STATUS_TOO_LARGE = "erreur : mémoire insuffisante.";
00055 public static String STATUS_UNSUPPORTED_MEDIA = "erreur : format de fichier non supporté";
00056 public static String STATUS_EXIST_TARGET = "erreur de protocol";
00057 public static String STATUS_DEVICE_FULL = "erreur : mémoire insuffisante.";
00058 public static String STATUS_FAILED = "erreur durant la synchronisation";
00059 public static String STATUS_COMMAND_NOT_IMPLEMENTED = "erreur : commande non supportée.";
00060 public static String STATUS_SYNCHRO_CONFLIC = "erreur : conflit de synchronisation.";
00061 public static String STATUS_UNKNOWN = "status non reconnu.";
00062
00063 public static String OK_MESSAGE;
00064 public static String NOK_MESSAGE;
00065
00066 private static JournalManager manager;
00067 private JournalQueryManager queryManager;
00068 private Array journalRendererList;
00069
00070 private JournalManager() {
00071 OK_MESSAGE = INTMOKMESSAGE;
00072 NOK_MESSAGE = INTMNOKMESSAGE;
00073 journalRendererList = new Array(10);
00074 queryManager = new JournalQueryManager();
00075 try {
00076 queryManager.createJournalTable();
00077 } catch (Exception e) {
00078 LogManager.traceError(LogServices.WEBSERVICE, e);
00079 }
00080 }
00081
00082 public static JournalManager getManager() {
00083 if (manager == null) {
00084 synchronized(JournalManager.class) {
00085 if (manager == null) {
00086 manager = new JournalManager();
00087 }
00088 }
00089 }
00090 return manager;
00091 }
00092
00093 public void registerJournalLogRenderer(JournalLogRenderer renderer) {
00094 journalRendererList.add(renderer);
00095 }
00096
00097 public void clearJournalLogRendererForService(String serviceName){
00098 Array temp = getRendererList();
00099 JournalLogRenderer renderer = null;
00100 for(int i=0;i<temp.size();i++){
00101 renderer = (JournalLogRenderer)temp.get(i);
00102 if(renderer.getSyncName().equals(serviceName)){
00103 JournalManager.getManager().deleteAllJournalEntryForService(renderer.getSyncName());
00104 journalRendererList.remove(i);
00105 }
00106 }
00107
00108 }
00109
00110 public Array getRendererList() {
00111 return journalRendererList;
00112 }
00113
00114 public void saveJournalEntry(String serviceName, short id, String data, int status) {
00115 try {
00116
00117 if (data.length() > 200) {
00118 data = data.substring(0, 200);
00119 }
00120 JournalEntry entry = new JournalEntry(serviceName, id, data, status, org.openmobileis.embedded.util.SystemAPI.currentTimeInMillis());
00121 queryManager.createOrUpdate(entry);
00122 } catch (Exception e) {
00123 LogManager.traceError(LogServices.WEBSERVICE, e);
00124 }
00125 }
00126
00127
00128 public JournalEntry[] getAllJournalEntryForService(String serviceName) {
00129 try {
00130 org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00131 JournalEntry[] entries = new JournalEntry[result.size()];
00132 result.toArray(entries);
00133 return entries;
00134 } catch (Exception e) {
00135 LogManager.traceError(LogServices.WEBSERVICE, e);
00136 }
00137 return null;
00138 }
00139
00140
00141 public void deleteAllJournalEntryForService(String serviceName) {
00142 try {
00143 queryManager.deleteAllEntryForService(serviceName);
00144 } catch (Exception e) {
00145 LogManager.traceError(LogServices.WEBSERVICE, e);
00146 }
00147 }
00148
00149
00150
00151
00152 public String getErrorMessageForSynchroStatus (int status) {
00153 String ret = JournalManager.STATUS_UNKNOWN;
00154 switch (status) {
00155 case Status.STATUS_SYNC_IN_PROGRESS:
00156 ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00157 break;
00158 case Status.STATUS_OK:
00159 ret = JournalManager.STATUS_OK;
00160 break;
00161 case Status.STATUS_NO_CONTENT:
00162 ret = JournalManager.STATUS_NO_CONTENT;
00163 break;
00164 case Status.STATUS_PARTIAL_CONTENT:
00165 ret = JournalManager.STATUS_PARTIAL_CONTENT;
00166 break;
00167 case Status.STATUS_WRONG_FORMAT:
00168 ret = JournalManager.STATUS_WRONG_FORMAT;
00169 break;
00170 case Status.STATUS_UNAUTHORIZED:
00171 ret = JournalManager.STATUS_UNAUTHORIZED;
00172 break;
00173 case Status.STATUS_NOT_FOUND:
00174 ret = JournalManager.STATUS_NOT_FOUND;
00175 break;
00176 case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00177 ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00178 break;
00179 case Status.STATUS_TOO_LARGE:
00180 ret = JournalManager.STATUS_TOO_LARGE;
00181 break;
00182 case Status.STATUS_UNSUPPORTED_MEDIA:
00183 ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00184 break;
00185 case Status.STATUS_EXIST_TARGET:
00186 ret = JournalManager.STATUS_EXIST_TARGET;
00187 break;
00188 case Status.STATUS_DEVICE_FULL:
00189 ret = JournalManager.STATUS_DEVICE_FULL;
00190 break;
00191 case Status.STATUS_FAILED:
00192 ret = JournalManager.STATUS_FAILED;
00193 break;
00194 case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00195 ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00196 break;
00197 case Status.STATUS_SYNCHRO_CONFLIC:
00198 ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00199 break;
00200 }
00201 return ret;
00202 }
00203
00204 }