/*
* Copyright (C) 2016-2017 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.survey.dao;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.waterforpeople.mapping.domain.CaddisflyResource;
/**
* Dao for listing Caddisfly resources Note: this class doesn't need to implement baseDAO as it
* consists of only a single method.
*/
public class CaddisflyResourceDao {
private static ObjectMapper mapper = new ObjectMapper();
private static final Logger log = Logger.getLogger(CascadeResourceDao.class
.getName());
/**
* lists caddisfly resources. Source is the json file caddisfly-tests.json stored in
* WEB-INF/resources
*/
public List<CaddisflyResource> listResources() {
List<CaddisflyResource> result = null;
try {
InputStream stream = getClass().getClassLoader()
.getResourceAsStream(
"resources/caddisfly/caddisfly-tests.json");
// create a list of caddisflyResource objects
JsonNode rootNode = mapper.readTree(stream);
result = mapper.readValue(rootNode.get("tests"),
new TypeReference<List<CaddisflyResource>>() {
});
} catch (Exception e) {
log.log(Level.SEVERE,
"Error parsing Caddisfly resource: " + e.getMessage(), e);
}
if (result != null) {
return result;
} else {
return Collections.emptyList();
}
}
}