JournalManager.java

00001 /*
00002  * OpenMobileIS - a free Java(TM) Framework for mobile applications Java(TM)
00003  * Copyright (C) 2004-2006 Philippe Delrieu
00004  * All rights reserved.
00005  * Contact: pdelrieu@openmobileis.org
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
00020  * USA
00021  *
00022  *  Author : Philippe Delrieu
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.embedded.util.SystemAPI;
00031 import org.openmobileis.synchro.openmsp.protocol.Status;
00032 
00042 public class JournalManager {
00043         private static final String INTMOKMESSAGE="OK";
00044         private static final String INTMNOKMESSAGE="echec";
00045 
00046 
00047   public static String STATUS_SYNC_IN_PROGRESS="en cours";
00048   public static String STATUS_OK = "OK";
00049   public static String STATUS_NO_CONTENT = "pas de contenu";
00050   public static String STATUS_PARTIAL_CONTENT = "contenu partiel";
00051   public static String STATUS_WRONG_FORMAT = "erreur:format de fichier incorrecte";
00052   public static String STATUS_UNAUTHORIZED = "erreur d'authentification";
00053   public static String STATUS_NOT_FOUND = "erreur : service non touvé.";
00054   public static String STATUS_AUTHENTIFICATION_REQUIRED = "erreur : authorisation requise.";
00055   public static String STATUS_TOO_LARGE = "erreur : mémoire insuffisante.";
00056   public static String STATUS_UNSUPPORTED_MEDIA = "erreur : format de fichier non supporté.";
00057   public static String STATUS_EXIST_TARGET = "erreur de protocol";
00058   public static String STATUS_DEVICE_FULL = "erreur : mémoire insuffisante.";
00059   public static String STATUS_FAILED = "erreur durant la synchronisation";
00060   public static String STATUS_COMMAND_NOT_IMPLEMENTED = "erreur : commande non supportée.";
00061   public static String STATUS_SYNCHRO_CONFLIC = "erreur : conflit de synchronisation.";
00062   public static String STATUS_UNKNOWN = "status non reconnu.";
00063   public static String STATUS_OK_RESTART_APPLI = "L'application a été mise à jour. Redémarrage en cours. Veuillez patienter.";
00064 
00065         public static String OK_MESSAGE;
00066         public static String NOK_MESSAGE;
00067 
00068   private static JournalManager manager;
00069   private JournalQueryManager queryManager;
00070   private Array journalRendererList;
00071 
00072   private JournalManager() {
00073         OK_MESSAGE = INTMOKMESSAGE;
00074         NOK_MESSAGE = INTMNOKMESSAGE;
00075     journalRendererList = new Array(10);
00076     queryManager = new JournalQueryManager();
00077     try {
00078       queryManager.createJournalTable();
00079     } catch (Exception e) {
00080       LogManager.traceError(LogServices.WEBSERVICE, e);
00081     }
00082   }
00083 
00084   public static JournalManager getManager() {
00085     if (manager == null)  {
00086       synchronized(JournalManager.class)  {
00087         if (manager == null)  {
00088           manager = new JournalManager();
00089         }
00090       }
00091     }
00092     return manager;
00093   }
00094 
00095   public void registerJournalLogRenderer(JournalLogRenderer renderer) {
00096     journalRendererList.add(renderer);
00097   }
00098 
00099   public void clearJournalLogRendererForService(String serviceName){
00100           Array temp = getRendererList();
00101           JournalLogRenderer renderer = null;
00102           for(int i=0;i<temp.size();i++){
00103                         renderer = (JournalLogRenderer)temp.get(i);
00104                         if(renderer.getSyncName().equals(serviceName)){
00105                                 JournalManager.getManager().deleteAllJournalEntryForService(renderer.getSyncName());
00106                                 journalRendererList.remove(i);
00107                         }
00108           }
00109 
00110   }
00111 
00112   public Array getRendererList() {
00113     return journalRendererList;
00114   }
00115 
00116   public void saveJournalEntry(String serviceName, short id, String data, int status)  {
00117     try {
00118       // check data length
00119       if (data.length() > 200) {
00120         data = data.substring(0, 200);
00121       }
00122       JournalEntry entry = new JournalEntry(serviceName, id, data, status, SystemAPI.getManager().currentTimeInMillis());
00123       queryManager.createOrUpdate(entry);
00124     } catch (Exception e) {
00125       LogManager.traceError(LogServices.WEBSERVICE, e);
00126     }
00127   }
00128 
00129 
00130   public JournalEntry[] getAllJournalEntryForService(String serviceName)  {
00131     try {
00132       org.openmobileis.common.util.collection.Array result = queryManager.getAllEntryForService(serviceName);
00133       JournalEntry[] entries = new JournalEntry[result.size()];
00134       result.toArray(entries);
00135       return entries;
00136     } catch (Exception e) {
00137       LogManager.traceError(LogServices.WEBSERVICE, e);
00138     }
00139     return null;
00140   }
00141 
00142 
00143   public void deleteAllJournalEntryForService(String serviceName)  {
00144     try {
00145       queryManager.deleteAllEntryForService(serviceName);
00146     } catch (Exception e) {
00147       LogManager.traceError(LogServices.WEBSERVICE, e);
00148    }
00149   }
00150 
00151   /*
00152   * Return error message from a status
00153   */
00154   public String getErrorMessageForSynchroStatus (int status) {
00155     String ret = JournalManager.STATUS_UNKNOWN;
00156     switch (status) {
00157     case Status.STATUS_SYNC_IN_PROGRESS:
00158       ret = JournalManager.STATUS_SYNC_IN_PROGRESS;
00159       break;
00160     case Status.STATUS_OK:
00161     ret = JournalManager.STATUS_OK;
00162     break;
00163     case Status.STATUS_NO_CONTENT:
00164     ret = JournalManager.STATUS_NO_CONTENT;
00165     break;
00166     case Status.STATUS_PARTIAL_CONTENT:
00167     ret = JournalManager.STATUS_PARTIAL_CONTENT;
00168     break;
00169     case Status.STATUS_WRONG_FORMAT:
00170     ret = JournalManager.STATUS_WRONG_FORMAT;
00171     break;
00172     case Status.STATUS_UNAUTHORIZED:
00173     ret = JournalManager.STATUS_UNAUTHORIZED;
00174     break;
00175    case Status.STATUS_NOT_FOUND:
00176    ret = JournalManager.STATUS_NOT_FOUND;
00177    break;
00178     case Status.STATUS_AUTHENTIFICATION_REQUIRED:
00179     ret = JournalManager.STATUS_AUTHENTIFICATION_REQUIRED;
00180     break;
00181     case Status.STATUS_TOO_LARGE:
00182     ret = JournalManager.STATUS_TOO_LARGE;
00183     break;
00184     case Status.STATUS_UNSUPPORTED_MEDIA:
00185     ret = JournalManager.STATUS_UNSUPPORTED_MEDIA;
00186     break;
00187     case Status.STATUS_EXIST_TARGET:
00188     ret = JournalManager.STATUS_EXIST_TARGET;
00189     break;
00190     case Status.STATUS_DEVICE_FULL:
00191     ret = JournalManager.STATUS_DEVICE_FULL;
00192     break;
00193     case Status.STATUS_FAILED:
00194     ret = JournalManager.STATUS_FAILED;
00195     break;
00196     case Status.STATUS_COMMAND_NOT_IMPLEMENTED:
00197     ret = JournalManager.STATUS_COMMAND_NOT_IMPLEMENTED;
00198     break;
00199     case Status.STATUS_SYNCHRO_CONFLIC:
00200       ret = JournalManager.STATUS_SYNCHRO_CONFLIC;
00201       break;
00202     case Status.STATUS_OK_RESTART_APPLICATION:
00203       ret = JournalManager.STATUS_OK_RESTART_APPLI;
00204       break;
00205     }
00206     return ret;
00207   }
00208 
00209 }

Generated on Mon Jan 11 21:19:15 2010 for OpenMobileIS by  doxygen 1.5.4