/*
* � 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.das.service;
import static com.ibm.domino.das.servlet.DasServlet.DAS_LOGGER;
import static com.ibm.domino.services.rest.RestParameterConstants.DEFAULT_VIEW_COUNT;
import static com.ibm.domino.services.rest.RestParameterConstants.MAX_VIEW_COUNT;
import java.util.HashSet;
import java.util.Set;
import lotus.domino.NotesException;
import lotus.domino.Session;
import com.ibm.commons.util.StringUtil;
import com.ibm.domino.das.resources.DbCollectionResource;
import com.ibm.domino.das.resources.DocumentCollectionResource;
import com.ibm.domino.das.resources.DocumentResource;
import com.ibm.domino.das.resources.ViewCollectionResource;
import com.ibm.domino.das.resources.ViewDesignResource;
import com.ibm.domino.das.resources.ViewEntryCollectionResource;
import com.ibm.domino.das.resources.ViewEntryResource;
import com.ibm.domino.osgi.core.context.ContextInfo;
/**
* Data REST service
*/
public class DataService extends RestService {
public static final String STAT_DB_COLLECTION = "DbCollection"; // $NON-NLS-1$
public static final String STAT_DOCUMENT = "Document"; // $NON-NLS-1$
public static final String STAT_DOC_COLLECTION = "DocCollection"; // $NON-NLS-1$
public static final String STAT_VIEW_COLLECTION = "ViewCollection"; // $NON-NLS-1$
public static final String STAT_VIEW_DESIGN = "ViewDesign"; // $NON-NLS-1$
public static final String STAT_VIEW_ENTRIES = "ViewEntryCollection"; // $NON-NLS-1$
public static final String STAT_VIEW_ENTRY = "ViewEntry"; // $NON-NLS-1$
private static Boolean s_useRelativeUrls = null;
private static int s_maxViewEntries = -1;
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
DAS_LOGGER.getLogger().fine("Adding data resources."); // $NON-NLS-1$
classes.add(DbCollectionResource.class);
classes.add(DocumentCollectionResource.class);
classes.add(DocumentResource.class);
classes.add(ViewCollectionResource.class);
classes.add(ViewDesignResource.class);
classes.add(ViewEntryCollectionResource.class);
classes.add(ViewEntryResource.class);
return classes;
}
public static boolean isUseRelativeUrls() {
boolean useRelativeUrls = true;
try {
Session session = ContextInfo.getUserSession();
if ( s_useRelativeUrls == null && session != null ) {
// One time intialization
String value = session.getEnvironmentString("DataServiceAbsoluteUrls", true); // $NON-NLS-1$
if ( "1".equals(value) ) {
useRelativeUrls = false;
}
s_useRelativeUrls = new Boolean(useRelativeUrls);
}
}
catch (NotesException e) {
// Ignore this
}
if ( s_useRelativeUrls != null ) {
useRelativeUrls = s_useRelativeUrls;
}
return useRelativeUrls;
}
public static int getMaxViewEntries() {
if ( s_maxViewEntries == -1 ) {
// One time intialization from notes.ini
try {
Session session = ContextInfo.getUserSession();
if ( session != null ) {
String value = session.getEnvironmentString("DataServiceMaxViewEntries", true); // $NON-NLS-1$
if ( StringUtil.isNotEmpty(value) ) {
int maxCount = Integer.valueOf(value);
if ( maxCount > DEFAULT_VIEW_COUNT ) {
s_maxViewEntries = maxCount;
}
}
}
}
catch (Throwable e) {
// Ignore all exceptions (including unchecked)
}
if ( s_maxViewEntries == -1 ) {
// Static value is still not initialized. Use the default value.
s_maxViewEntries = MAX_VIEW_COUNT;
}
}
return s_maxViewEntries;
}
}