package de.onyxbits.tradetrax.services; import java.util.HashMap; import java.util.List; import org.apache.tapestry5.hibernate.HibernateSessionSource; import org.hibernate.Session; import de.onyxbits.tradetrax.entities.Setting; public class SettingsStoreImpl implements SettingsStore { private HashMap<String, Setting> store = new HashMap<String, Setting>(); private Session session; public SettingsStoreImpl(HibernateSessionSource source) { this.session = source.create(); @SuppressWarnings("unchecked") List<Setting> lst = (List<Setting>) session.createCriteria(Setting.class).list(); store = new HashMap<String, Setting>(); for (Setting s : lst) { store.put(s.getName(), s); } } public String get(String key, String value) { Setting tmp = store.get(key); if (tmp == null) { return value; } else { return tmp.getValue(); } } public void set(String key, String value) { Setting s = store.get(key); if (s == null) { s = new Setting(); s.setName(key); s.setValue(value); store.put(key, s); session.beginTransaction(); session.persist(s); session.getTransaction().commit(); } else { s.setValue(value); session.beginTransaction(); if (value == null) { session.delete(s); } else { session.update(s); } session.getTransaction().commit(); } } }