/*
* � Copyright IBM Corp. 2013
*
* 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 com.ibm.domino.commons.json;
import static com.ibm.domino.commons.json.JsonConstants.ISO8601_UTC;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_ENABLED;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_END;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_MESSAGE;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_SEND_EXTERNAL;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_START;
import static com.ibm.domino.commons.json.JsonConstants.JSON_OOO_SUBJECT;
import java.io.IOException;
import com.ibm.commons.util.StringUtil;
import com.ibm.commons.util.io.json.JsonException;
import com.ibm.commons.util.io.json.JsonGenerator.Generator;
import com.ibm.commons.util.io.json.JsonGenerator.StringBuilderGenerator;
import com.ibm.commons.util.io.json.JsonJavaFactory;
import com.ibm.commons.util.io.json.JsonJavaObject;
import com.ibm.domino.commons.model.OooStatus;
/**
* Generates Out of Office status in JSON format.
*/
public class JsonOooStatusGenerator {
private Generator _generator = null;
public JsonOooStatusGenerator(StringBuilder sb) {
_generator = new StringBuilderGenerator(JsonJavaFactory.instanceEx, sb, false);
}
public void toJson(OooStatus oooStatus) throws JsonException, IOException {
JsonJavaObject obj = new JsonJavaObject();
if ( oooStatus.isEnabled() ) {
obj.putJsonProperty(JSON_OOO_ENABLED, true);
if ( !StringUtil.isEmpty(oooStatus.getSubject()) ) {
obj.putJsonProperty(JSON_OOO_SUBJECT, oooStatus.getSubject());
}
if ( !StringUtil.isEmpty(oooStatus.getMessage()) ) {
obj.putJsonProperty(JSON_OOO_MESSAGE, oooStatus.getMessage());
}
String start = ISO8601_UTC.format(oooStatus.getStart());
obj.putJsonProperty(JSON_OOO_START, start);
String end = ISO8601_UTC.format(oooStatus.getEnd());
obj.putJsonProperty(JSON_OOO_END, end);
obj.putJsonProperty(JSON_OOO_SEND_EXTERNAL, oooStatus.isSendExternal());
// SPR# XZHU98BBZM: Don't write the appendReturnToSubject property
// because the OooStatusProvider doesn't read the correct value yet.
//obj.putJsonProperty(JSON_OOO_APPEND_RETURN, oooStatus.isAppendReturnToSubject());
}
else {
obj.putJsonProperty(JSON_OOO_ENABLED, false);
}
_generator.toJson(obj);
}
}