/* * Copyright 2009-2012 by KNURT Systeme (http://www.knurt.de) * * Licensed under the Creative Commons License Attribution-NonCommercial-ShareAlike 3.0 Unported; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://creativecommons.org/licenses/by-nc-sa/3.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 de.knurt.fam.core.persistence.dao.ibatis; import java.util.ArrayList; import java.util.List; import java.util.Properties; import de.knurt.fam.connector.FamConnector; import de.knurt.fam.core.aspects.logging.FamLog; import de.knurt.fam.core.model.config.Facility; import de.knurt.fam.core.model.persist.FacilityAvailability; import de.knurt.fam.core.model.persist.LogbookEntry; import de.knurt.fam.core.model.persist.User; import de.knurt.fam.core.persistence.dao.FacilityDao; import de.knurt.fam.core.persistence.dao.config.FacilityConfigDao; /** * dao for every {@link LogbookEntry} stored in sql * * @author Daniel Oltmanns * @since 0.20090828 */ public class FacilityDao4ibatis extends FacilityDao { /** {@inheritDoc} */ @Override protected synchronized boolean internInsert(FacilityAvailability dataholder) { boolean result = false; try { FamSqlMapClientDaoSupport.sqlMap().insert("facility.availability.insert", dataholder); } catch (Exception e) { FamLog.exception(e, 201205071125l); } return result; } /** {@inheritDoc} */ @Override protected synchronized boolean internUpdate(FacilityAvailability dataholder) { boolean result = false; try { FamSqlMapClientDaoSupport.sqlMap().update("facility.availability.update", dataholder); } catch (Exception e) { FamLog.exception(e, 201205071126l); } return result; } /** {@inheritDoc} */ @Override public synchronized boolean delete(FacilityAvailability deleteThis) { boolean result = false; try { FamSqlMapClientDaoSupport.sqlMap().delete("facility.availability.delete", deleteThis, 1); result = true; } catch (Exception e) { FamLog.exception(e, 201204231012l); } return result; } /** {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public List<FacilityAvailability> getObjectsLike(FacilityAvailability example) { return FamSqlMapClientDaoSupport.sqlMap().queryForList("facility.availability.select.where", example); } /** {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public List<FacilityAvailability> getAll() { return FamSqlMapClientDaoSupport.sqlMap().queryForList("facility.availability.select.all"); } /** {@inheritDoc} */ @Override public List<FacilityAvailability> getFacilityAvailabilities(String facilityKey) { FacilityAvailability da = new FacilityAvailability(); da.setFacilityKey(facilityKey.trim()); List<FacilityAvailability> result = this.getObjectsLike(da); return result; } /** {@inheritDoc} */ @Override protected long getBiggestId() { Integer result = (Integer) FamSqlMapClientDaoSupport.sqlMap().queryForObject("facility.availability.select.idmax"); return result == null ? 0 : result.longValue(); } /** {@inheritDoc} */ @Override public List<Facility> getBookableFacilitiesUserIsResponsibleFor(User user) { List<Facility> result = new ArrayList<Facility>(); List<Facility> facilities = this.getFacilitiesUserIsResponsibleFor(user); for (Facility facility : facilities) { if (facility.isBookable()) { result.add(facility); } } return result; } /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public List<String> getFacilityKeysUserIsResponsibleFor(User user) { if (FamConnector.sqlConfigured()) { return FamSqlMapClientDaoSupport.sqlMap().queryForList("facility.responsibility.select.of.user", user); } else { return new ArrayList<String>(0); } } /** {@inheritDoc} */ @Override public List<Facility> getFacilitiesUserIsResponsibleFor(User user) { List<String> keys = this.getFacilityKeysUserIsResponsibleFor(user); List<Facility> result = new ArrayList<Facility>(keys.size()); for (String key : keys) { result.add(FacilityConfigDao.facility(key)); } return result; } /** {@inheritDoc} */ @Override public boolean hasResponsibilityForAFacility(User user) { return this.getFacilitiesUserIsResponsibleFor(user).size() > 0; } @Override public boolean updateResponsibility(User user, List<Facility> facilities) { boolean result = false; try { FamSqlMapClientDaoSupport.sqlMap().update("facility.responsibility.update.remove", user); for (Facility facility : facilities) { Properties params = new Properties(); params.put("username", user.getUsername()); params.put("facility_key", facility.getKey()); FamSqlMapClientDaoSupport.sqlMap().insert("facility.responsibility.insert", params); } result = true; } catch (Exception e) { FamLog.exception(e, 201205181313l); } return result; } }