/* * Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package com.gallatinsystems.standards.dao; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.jdo.PersistenceManager; import org.waterforpeople.mapping.domain.AccessPoint; import com.gallatinsystems.framework.dao.BaseDAO; import com.gallatinsystems.framework.servlet.PersistenceFilter; import com.gallatinsystems.standards.domain.StandardScoring; /** * Dao for managing scoring objects. TODO: need to move this or get rid of dependency on AccessPoint */ public class StandardScoringDao extends BaseDAO<StandardScoring> { public StandardScoringDao() { super(StandardScoring.class); } public List<StandardScoring> listStandardScoring(AccessPoint ap) { List<StandardScoring> ssList = new ArrayList<StandardScoring>(); ssList = super.listByProperty("pointType", ap.getPointType().toString(), "String"); return ssList; } public List<StandardScoring> listStandardScoringByBucketForAccessPoint( Long scoreBucketId, AccessPoint ap) { List<StandardScoring> supersetList = new ArrayList<StandardScoring>(); List<StandardScoring> globalList = listGlobalStandardScoringForAccessPoint( scoreBucketId, ap); List<StandardScoring> localList = listLocalStandardScoringForAccessPoint(scoreBucketId, ap); Collections.copy(supersetList, globalList); Collections.copy(supersetList, localList); return supersetList; } public List<StandardScoring> listStandardScoring(Long scoreBucketId) { List<StandardScoring> ssList = new ArrayList<StandardScoring>(); ssList = super.listByProperty("scoreBucketId", scoreBucketId, "Long"); return ssList; } @SuppressWarnings("unchecked") public List<StandardScoring> listGlobalStandardScoringForAccessPoint( Long scoreBucketId, AccessPoint ap) { PersistenceManager pm = PersistenceFilter.getManager(); javax.jdo.Query query = pm.newQuery(AccessPoint.class); Map<String, Object> paramMap = null; StringBuilder filterString = new StringBuilder(); StringBuilder paramString = new StringBuilder(); paramMap = new HashMap<String, Object>(); appendNonNullParam("pointType", filterString, paramString, "String", ap.getPointType(), paramMap); appendNonNullParam("scoreBucketId", filterString, paramString, "Long", scoreBucketId, paramMap); appendNonNullParam("mapToObject", filterString, paramString, "String", "AccessPoint", paramMap); appendNonNullParam("scopeType", filterString, paramString, "String", "GLOBAL", paramMap); query.setFilter(filterString.toString()); query.declareParameters(paramString.toString()); List<StandardScoring> results = (List<StandardScoring>) query .executeWithMap(paramMap); return results; } @SuppressWarnings("unchecked") public List<StandardScoring> listLocalDistanceStandardScoringForAccessPoint( AccessPoint ap) { PersistenceManager pm = PersistenceFilter.getManager(); javax.jdo.Query query = pm.newQuery(AccessPoint.class); Map<String, Object> paramMap = null; StringBuilder filterString = new StringBuilder(); StringBuilder paramString = new StringBuilder(); paramMap = new HashMap<String, Object>(); appendNonNullParam("pointType", filterString, paramString, "String", ap.getPointType(), paramMap); appendNonNullParam("mapToObject", filterString, paramString, "String", "AccessPoint", paramMap); appendNonNullParam("criteriaType", filterString, paramString, "String", "Distance", paramMap); appendNonNullParam("countryCode", filterString, paramString, "String", ap.getCountryCode(), paramMap); // ToDo: need to think about how to use the subvalue // appendNonNullParam("subValue", filterString, paramString, "String", // ap.getSub1(), paramMap); query.setFilter(filterString.toString()); query.declareParameters(paramString.toString()); List<StandardScoring> results = (List<StandardScoring>) query .executeWithMap(paramMap); return results; } @SuppressWarnings("unchecked") public List<StandardScoring> listLocalStandardScoringForAccessPoint( Long scoreBucketId, AccessPoint ap) { PersistenceManager pm = PersistenceFilter.getManager(); javax.jdo.Query query = pm.newQuery(AccessPoint.class); Map<String, Object> paramMap = null; StringBuilder filterString = new StringBuilder(); StringBuilder paramString = new StringBuilder(); paramMap = new HashMap<String, Object>(); appendNonNullParam("pointType", filterString, paramString, "String", ap.getPointType(), paramMap); appendNonNullParam("scoreBucketId", filterString, paramString, "Long", scoreBucketId, paramMap); appendNonNullParam("mapToObject", filterString, paramString, "String", "AccessPoint", paramMap); appendNonNullParam("scopeType", filterString, paramString, "String", "LOCAL", paramMap); appendNonNullParam("countryCode", filterString, paramString, "String", ap.getCountryCode(), paramMap); query.setFilter(filterString.toString()); query.declareParameters(paramString.toString()); List<StandardScoring> results = (List<StandardScoring>) query .executeWithMap(paramMap); return results; } }