001 /* 002 * JBoss DNA (http://www.jboss.org/dna) 003 * See the COPYRIGHT.txt file distributed with this work for information 004 * regarding copyright ownership. Some portions may be licensed 005 * to Red Hat, Inc. under one or more contributor license agreements. 006 * See the AUTHORS.txt file in the distribution for a full listing of 007 * individual contributors. 008 * 009 * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA 010 * is licensed to you under the terms of the GNU Lesser General Public License as 011 * published by the Free Software Foundation; either version 2.1 of 012 * the License, or (at your option) any later version. 013 * 014 * JBoss DNA is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 017 * Lesser General Public License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this software; if not, write to the Free 021 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 022 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 023 */ 024 package org.jboss.dna.connector.store.jpa.util; 025 026 import java.util.UUID; 027 import javax.persistence.EntityManager; 028 import org.jboss.dna.common.util.CheckArg; 029 import org.jboss.dna.connector.store.jpa.Model; 030 031 /** 032 * @author Randall Hauch 033 */ 034 public class StoreOptions { 035 036 public static final String ROOT_NODE_UUID = "org.jboss.dna.store.rootNodeUuid"; 037 public static final String VERSION = "org.jboss.dna.store.version"; 038 public static final String MODEL = "org.jboss.dna.store.model"; 039 040 private final EntityManager entityManager; 041 042 public StoreOptions( EntityManager manager ) { 043 CheckArg.isNotNull(manager, "manager"); 044 this.entityManager = manager; 045 } 046 047 public UUID getRootNodeUuid() { 048 String value = getOption(ROOT_NODE_UUID); 049 return value != null ? UUID.fromString(value) : null; 050 } 051 052 public void setRootNodeUuid( UUID uuid ) { 053 CheckArg.isNotNull(uuid, "uuid"); 054 setOption(ROOT_NODE_UUID, uuid.toString()); 055 } 056 057 public String getVersion() { 058 return getOption(VERSION); 059 } 060 061 public void setVersion( String version ) { 062 setOption(VERSION, version); 063 } 064 065 public String getModelName() { 066 return getOption(MODEL); 067 } 068 069 public void setModelName( Model model ) { 070 String modelName = model != null ? model.getName() : null; 071 setOption(MODEL, modelName); 072 } 073 074 public String getOption( String name ) { 075 StoreOptionEntity entity = entityManager.find(StoreOptionEntity.class, name); 076 return entity != null ? entity.getValue() : null; 077 } 078 079 public void setOption( String name, 080 String value ) { 081 CheckArg.isNotEmpty(name, "name"); 082 if (value != null) value = value.trim(); 083 StoreOptionEntity entity = entityManager.find(StoreOptionEntity.class, name); 084 if (entity == null) { 085 if (value != null) { 086 // There is no existing entity, but there is a valid value ... 087 entity = new StoreOptionEntity(name, value); 088 entityManager.persist(entity); 089 } 090 } else { 091 if (value != null) { 092 // Set value on the entity ... 093 entity.setValue(value); 094 } else { 095 // The existing entity is to be removed ... 096 entityManager.remove(entity); 097 } 098 } 099 } 100 101 public void removeOption( String name ) { 102 StoreOptionEntity entity = new StoreOptionEntity(name); 103 entityManager.remove(entity); 104 } 105 }