Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SYNCHRONISATION AVEC UN FICHIER PROPERTIES


Information sur la source

Catégorie :Api Classé sous : properties, préférences, gestion, synchronisation, listeners Niveau : Débutant Date de création : 05/12/2006 Date de mise à jour : 05/12/2006 17:40:21 Vu / téléchargé: 4 282 / 371

Note :
Aucune note

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Cette api gère la synchronisation avec un fichier properties.
De plus, elle permet de créer des listeners sur les propriétés (synchro avec le fichier properties, la valeur d'une propriété à changé etc...).
Ideal pour gérer facilement les préférences utilisateurs.

Le fichier zip contient un exemple, la javadoc pour les utilisateurs de l'api (seuls les membres
protected et public sont visibles) et une autre pour sa mieux se représenter l'api au complet afin de la modifier à sa guise (tous les membres sont visibles).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

05 décembre 2006 17:40:22 :
J'ai déziper les sources au sein du zip principal

Commentaires et avis

signaler à un administrateur
Commentaire de Twinuts le 05/12/2006 16:32:35 administrateur CS

Salut,

pourrais tu stp ne pas mettre les fichiers java dans un zip c'est super lourd de devoir télécherger le zip pour visualiser une source...

signaler à un administrateur
Commentaire de romuluslepunk le 05/12/2006 17:45:42

Effectivement j'avais pas pensé à celà, je viens d'uploader un nouveau zip

signaler à un administrateur
Commentaire de Twinuts le 05/12/2006 18:19:36 administrateur CS

Merci

signaler à un administrateur
Commentaire de Twinuts le 05/12/2006 21:14:45 administrateur CS

Salut,


concernant ton code il y a des choses que je ne comprend pas tu dis que tu fais de la synchronisation ...... mai c'est faux, je m'explique :


tu déclares la variable private boolean synchronise = false; hors il y à un truc qui ne cole pas si tu fais :
private ConfigManager mesConfig1 = ConfigManager.getInstance();
private ConfigManager mesConfig2 = ConfigManager.getInstance();

ici chacun à sa synchro ce qui n'est pas vraiment propre .... donc 2 solutions soit tu mets synchronise en static soit tu mets le constructeur de ConfigManager en private comme cela déjà tu commenceras à avoir un début de synchronisation...

ensuite autre chose tu ne lock pas le fichier ce qui est assez dommage vu qu'une application '1' peut modifier le fichier qu'utilise l'application 'n'... pourquoi ne pas lock le fichier ?

tu peux le faire avec :
private boolean                 locked          = true;
private RandomAccessFile        raLockFile      = null;
....

try {
   File lockedFile = new File(fileName);
   raLockFile = new RandomAccessFile(lockedFile, "rw");
   if(raLockFile.getChannel().tryLock() == null)
       locked = false;
    else
       locked = true;
} catch (Exception e) { }

....
public boolean isLocked(){
    return locked;
}

et pour le déloquer
raLockFile.getChannel().close();


bref c'est pas vraiment une critique mais plus une pitite remarque qui pourrait rendre ta classe réellement synchronisé par une application voir même plusieurs applications

signaler à un administrateur
Commentaire de romuluslepunk le 06/12/2006 18:31:53

Mon singleton me semble bon, le constructeur est déjà en private mais son contenue est vide, celà joue sur le résultat ?

Le lock est prévu par la suite, je ne l'est pas noté dans les commentaires final de la source pour plusieurs raisons :
- j'hesite encore à l'ajouter, en cas d'arret brutal du programme, la methode desynchronise() ne sera pas apelé et le deblocage du fichier ne se fera pas, à moins que je me trompe...
- je n'est jamais utilisé de fichier lock et je ne voulais pas noté une possible mise a jour sans être sûre d'en être capable. Ton bout de code devrait m'aider, merci
- si un programme quelconque utilise et met à jour le fichier properties sans passer par l'api, le lock n'a plus d'interet.

Je ne suis pas un pro de java et comme je l'est dis, j'ai jamais utilisé le blocage de fichier et il se peut que je me suis complètement trompé dans mes raisons.


Je ne le prend pas comme une critique, c'est bien le but de ce site, partager ses connaissances/idées ;)

signaler à un administrateur
Commentaire de Twinuts le 06/12/2006 19:52:19 administrateur CS

"Mon singleton me semble bon, le constructeur est déjà en private mais son contenue est vide, celà joue sur le résultat ?"
- cela joue si tu utilise le constructeur public sans passer par le getInstance

"j'hesite encore à l'ajouter, en cas d'arret brutal du programme, la methode desynchronise() "
- enfait le lock prendra fin en cas d'arret de l'appli sinon tu peux le faire proprement et utiliser le shuttdownhook de Runtime ref(pour un exemple) : http://www.techmag.biz/java_app_shutdown_hook

"si un programme quelconque utilise et met à jour le fichier properties sans passer par l'api, le lock n'a plus d'interet"
- si par ce qu'il ne pourra ni lire ou modifier le fichier vu que dans mon exemple j'ouvre le fichier en rw soit read & write et le lock le vérouille sur le mode d'ouverture soit read write

signaler à un administrateur
Commentaire de romuluslepunk le 06/12/2006 21:24:20

Si mon constructeur est en private, il est impossible de faire :
ConfigManager myconfigs = new ConfigManager();
Sauf au sein de la la classe ConfigManager. Du moins mon Eclipse ne l'autorise pas donc il y a certainement erreur de compilation (au pire je testerai une compilation en console).

Si je fait :
private ConfigManager mesConfig1 = ConfigManager.getInstance();
private ConfigManager mesConfig2 = ConfigManager.getInstance();
Les 2 objets devrait pointer vers l'objet instance ?
Je vais faire des tests (il ya plus de chances que tu aie raison que le contraire :) )


Super pour le shutdown, je pense que je vais :
- faire hérité Thread à ConfigManager
- ajouter le blocage et addShuttdownhook(this) dans la methode synchronise
- supprimer le blocage et removeShuttdownhook(this) dans la methode desynchronise
- copier le contenue de la methode desynchronise dans la methode run (sauf removeShuttdownhook(this)...)
C'est ce qui me parait être le plus simple.

Ce week-end celà devrait être testé au niveau du singleton et le shutdown réalisé.


Un grand merci

signaler à un administrateur
Commentaire de Twinuts le 06/12/2006 23:45:39 administrateur CS

Salut,

"Si mon constructeur est en private" <- milles excuses je viens seulement de le voir caché entre deux commentaires :D si le constructeur est private comme c'est le cas et que l'instance interne est static alors pas de risque le singleton fonctionne :)

signaler à un administrateur
Commentaire de codefalse le 19/12/2006 18:31:25 administrateur CS

excusez moi mais je ne comprends pas ce que vous voulez dire par Synchronisation avec un fichier ?
Je connais les termes de synchronisation mais pas avec un fichier ?!
Pourriez vous m'expliquer s'il vous plait ?
merci :)

signaler à un administrateur
Commentaire de Twinuts le 19/12/2006 20:08:02 administrateur CS

Salut,

en gros cela veut dire simplement qu'a un instant donné tu es le seul à pouvoir accéder au fichier

signaler à un administrateur
Commentaire de codefalse le 19/12/2006 22:11:19 administrateur CS

ok merci ! :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

probleme de gestion de fenetre [ par joyman555 ] salutj espere que qq pourra m aider a trouver une solution a mon probleme:j ai un JDesktopPane et au fur et a mesure je recois des requetes de d autre probleme de gestion de JInternalFrame [ par joyman555 ] salutj espere que qq pourra m aider a trouver une solution a mon probleme:j ai un JDesktopPane et au fur et a mesure je recois des requetes de d autre Gestion de signets en java [ par Poussinette ] Bonjours, je suis desespérée..est-ce que quelqu'un aurait une idée de programme pour gérer des signets (copier, renommer, creer, supprimer, ajouter ec gestion des cookies [ par nwi004 ] Bonjour,Je cherche à récupérer un fichier sur un serveur ASP hors ce serveur se sert de cookies pour autoriser la connection. Lorsque j'utilise URL.op [gestion evenements] 2 touches en meme temps ? [ par vince03 ] Bonjour, voila je suis en train de developper un jeu en Swing (une version Java de Kooles, un petit jeu qui tourne en C sous Linux) .... et je voudrai gestion memoire d'un vector [ par marsrepart ] voilà, j'ai un petit souci du un attribut vector...J'initialise ce vector avec plus de 400.000 cases et j'ai droit a une exception du type java.lang.O Gestion d'erreur avec throws... [ par jonathan100 ] Bonjour, Lors de la construction d'une instance de ma classe Paquet, qui correspond a un paquet de donne en reseau, des que je passe une donnee de typ gestion des salons de discussions dans un chat en JAVA [ par ProjetGTR ] bonjournous sommes 2 et nous développons un projet de chat en langage JAVA dans le carde d'un projet technique encadré par notre sectionnous désirerio Classe de gestion des matrices [ par progueur ] Bonsoir,Je recherche une classe de gestion de matrice permettant notamment le calcul du determinant, de la matrice inverse, ...Merci. gestion dynamique des instances [ par Frouf85 ] Je souhaite faire une applet et je veux créer dynamiquement des objets dans celle ci.par ex:for (int i=0;i&lt;j,i++){JTable table = new JTable();}mais


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.