55import java .io .IOException ;
66import java .io .PrintWriter ;
77import java .lang .reflect .Type ;
8+ import java .util .Collections ;
89import java .util .HashMap ;
910import java .util .Map ;
11+ import java .util .Set ;
1012
1113import org .eclipse .jgit .api .errors .WrongRepositoryStateException ;
1214import org .kohsuke .github .GHMyself ;
@@ -30,50 +32,109 @@ public class ConfigurationDatabase {
3032 //private static String gitSource = null; // madhephaestus
3133 private static String dbFile = "database.json" ;
3234 private static boolean checked ;
33- private static HashMap <String , HashMap <String , Object >> database = null ;
35+ private static Map <String , HashMap <String , Object >> database = null ;
3436 private static final Type TT_mapStringString = new TypeToken <HashMap <String , HashMap <String , Object >>>() {
3537 }.getType ();
3638 // chreat the gson object, this is the parsing factory
3739 private static Gson gson = new GsonBuilder ().disableHtmlEscaping ().setPrettyPrinting ().create ();
3840 private static IssueReportingExceptionHandler reporter = new IssueReportingExceptionHandler ();
3941 //private static String loggedInAs = null;
40- static {
4142
43+ public static void clear (String key ) {
44+ getDatabase ();
45+ synchronized (database ){
46+ getParamMap (key ).clear ();
47+ }
48+
4249 }
50+ public static Set <String > keySet (String name ) {
51+ Set <String > keySet ;
52+ getDatabase ();
53+ synchronized (database ){
54+ keySet = ConfigurationDatabase .getParamMap (name ).keySet ();
55+ }
56+ return keySet ;
57+ }
58+ public static boolean containsKey (String paramsKey , String string ) {
59+ boolean containsKey = false ;
60+ synchronized (database ){
61+ containsKey = ConfigurationDatabase .getParamMap (paramsKey ).containsKey (string );
62+ }
63+ return containsKey ;
4364
44- public static synchronized Object getObject (String paramsKey , String objectKey , Object defaultValue ) {
45- if (getParamMap (paramsKey ).get (objectKey ) == null ) {
46- //System.err.println("Cant find: " + paramsKey + ":" + objectKey);
47- setObject (paramsKey , objectKey , defaultValue );
65+ }
66+ public static String getKeyFromValue (String controllerName , String mappedValue ) {
67+ String ret =null ;
68+ getDatabase ();
69+ synchronized (database ){
70+ HashMap <String , Object > paramMap = ConfigurationDatabase .getParamMap (controllerName );
71+ for (String key : paramMap .keySet ()) {
72+ String string = (String ) paramMap .get (key );
73+ if (string .contentEquals (mappedValue )) {
74+ ret = key ;
75+ break ;
76+ }
77+ }
78+ }
79+ return ret ;
80+ }
81+ public static Object get (String paramsKey , String objectKey ) {
82+ return getObject (paramsKey , objectKey , null );
83+ }
84+ public static Object get (String paramsKey , String objectKey , Object defaultValue ) {
85+ return getObject (paramsKey , objectKey , defaultValue );
86+ }
87+ public static Object getObject (String paramsKey , String objectKey , Object defaultValue ) {
88+ Object ret =null ;
89+ getDatabase ();
90+ synchronized (database ){
91+ if (getParamMap (paramsKey ).get (objectKey ) == null ) {
92+ //System.err.println("Cant find: " + paramsKey + ":" + objectKey);
93+ setObject (paramsKey , objectKey , defaultValue );
94+ }
95+ ret = getParamMap (paramsKey ).get (objectKey );
4896 }
49- return getParamMap ( paramsKey ). get ( objectKey ) ;
97+ return ret ;
5098 }
5199
52100 public static HashMap <String , Object > getParamMap (String paramsKey ) {
53- if (getDatabase () .get (paramsKey ) == null ) {
54- getDatabase () .put (paramsKey , new HashMap <String , Object >());
101+ if (database .get (paramsKey ) == null ) {
102+ database .put (paramsKey , new HashMap <String , Object >());
55103 }
56- return getDatabase () .get (paramsKey );
104+ return database .get (paramsKey );
57105 }
58-
59- public static synchronized Object setObject (String paramsKey , String objectKey , Object value ) {
60- Object put = getParamMap (paramsKey ).put (objectKey , value );
106+ public static Object put (String paramsKey , String objectKey , Object value ) {
107+ return setObject (paramsKey , objectKey , value );
108+ }
109+
110+ public static Object setObject (String paramsKey , String objectKey , Object value ) {
111+ Object put =null ;
112+ getDatabase ();
113+ synchronized (database ){
114+ put =getParamMap (paramsKey ).put (objectKey , value );
115+ }
61116 save ();
62117 return put ;
63118 }
64-
65- public static synchronized Object removeObject (String paramsKey , String objectKey ) {
66- Object remove = getParamMap (paramsKey ).remove (objectKey );
119+ public static Object remove (String paramsKey , String objectKey ) {
120+ return removeObject (paramsKey , objectKey );
121+ }
122+ public static Object removeObject (String paramsKey , String objectKey ) {
123+ Object remove =null ;
124+ getDatabase ();
125+ synchronized (database ){
126+ remove = getParamMap (paramsKey ).remove (objectKey );
127+ }
67128 save ();
68129 return remove ;
69130 }
70131
71- public static synchronized void save () {
132+ public static void save () {
72133 String writeOut = null ;
73134 getDatabase ();
74- // synchronized(database){
135+ synchronized (database ){
75136 writeOut = gson .toJson (database , TT_mapStringString );
76- // }
137+ }
77138 File f =loadFile ();
78139
79140
@@ -88,14 +149,15 @@ public static synchronized void save() {
88149 }
89150
90151 @ SuppressWarnings ("unchecked" )
91- public static HashMap < String , HashMap < String , Object >> getDatabase () {
152+ public static void getDatabase () {
92153 if (database != null ) {
93- return database ;
154+ return ;
94155 }
95156 File loadFile = loadFile ();
96157 if (loadFile .exists ())
97158 try {
98- database = (HashMap <String , HashMap <String , Object >>) ScriptingEngine .inlineFileScriptRun (loadFile , null );
159+ database = Collections .synchronizedMap ((HashMap <String , HashMap <String , Object >>) ScriptingEngine .inlineFileScriptRun (loadFile , null ));
160+
99161 } catch (Exception e ) {
100162 // TODO Auto-generated catch block
101163 e .printStackTrace ();
@@ -106,7 +168,7 @@ public static HashMap<String, HashMap<String, Object>> getDatabase() {
106168 // new Exception().printStackTrace();
107169 }
108170
109- return database ;
171+ return ;
110172 }
111173
112174 public static File loadFile () {
@@ -140,4 +202,5 @@ public static File loadFile() {
140202
141203
142204
205+
143206}
0 commit comments