/************************************************************************
* Copyright (c) 2016 IoT-Solutions e.U.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.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 iot.jcypher.facade;
import java.io.StringWriter;
import java.util.List;
import javax.json.Json;
import javax.json.stream.JsonGenerator;
import javax.json.stream.JsonGeneratorFactory;
import iot.jcypher.database.IDBAccess;
import iot.jcypher.domain.DomainInformation;
import iot.jcypher.domain.genericmodel.internal.DomainModel;
import iot.jcypher.domain.internal.IIntDomainAccess;
import iot.jcypher.query.writer.Format;
import iot.jcypher.query.writer.JSONWriter;
public class JSONDBFacade {
private IDBAccess dbAccess;
private Format prettyFormat;
public JSONDBFacade(IDBAccess dbAccess) {
super();
this.dbAccess = dbAccess;
this.prettyFormat = Format.NONE;
}
/**
* Answer a JSON representation of the available domains in the database
* @return
*/
public String getDomains() {
StringWriter sw = new StringWriter();
JsonGenerator generator;
if (this.prettyFormat != Format.NONE) {
JsonGeneratorFactory gf = JSONWriter.getPrettyGeneratorFactory();
generator = gf.createGenerator(sw);
} else
generator = Json.createGenerator(sw);
generator.writeStartArray();
List<String> doms = DomainInformation.availableDomains(dbAccess);
for (String dom : doms) {
generator.write(dom);
}
generator.writeEnd();
generator.flush();
return sw.toString();
}
/**
* Set the format for creating JSON representations (i.e use of indentation and new lines),
* <br/>the default is 'no pretty printing'.
* @param prettyFormat
* @return
*/
public JSONDBFacade setPrettyFormat(Format prettyFormat) {
this.prettyFormat = prettyFormat;
return this;
}
}