/* * Copyright 2013 Pavel Stastny <pavel.stastny at gmail.com>. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.aplikator.server.processes.impl.processes.ipc.sharedfolder; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * @author Pavel Stastny <pavel.stastny at gmail.com> */ public class SharedFolderSingleton { private static Map<String, SharedFolderSingleton> INSTANCES = new HashMap<String, SharedFolderSingleton>(); protected int counter = 0; private File busFolder; private String appname; private SharedFolderSingleton(String appname) { this.appname = appname; String userHome = System.getProperty("user.home"); this.busFolder = new File(new File(userHome), ".aplikator" + File.separator + "processbus" + File.separator + this.appname); if (!this.busFolder.exists()) { this.busFolder.mkdirs(); } } public synchronized static SharedFolderSingleton getSharedFolder(String appname) { if (!INSTANCES.containsKey(appname)) { INSTANCES.put(appname, new SharedFolderSingleton(appname)); } return INSTANCES.get(appname); } public File getFolder() { return this.busFolder; } private int allocCounter() { counter++; return counter; } public synchronized File allocFileName(String fname) throws IOException { // big counter int c = allocCounter(); // fname counter int mcounter = 0; File folder = getFolder(); File f = new File(folder, c + "_" + fname + "." + mcounter); while (f.exists()) { mcounter++; f = new File(folder, c + "_" + fname + "." + mcounter); } f.createNewFile(); return f; } }