| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.chemistry.opencmis.fileshare; |
| |
| import java.util.GregorianCalendar; |
| import java.util.HashSet; |
| import java.util.Set; |
| import java.util.TimeZone; |
| |
| import org.apache.chemistry.opencmis.commons.PropertyIds; |
| import org.apache.chemistry.opencmis.commons.data.Properties; |
| import org.apache.chemistry.opencmis.commons.data.PropertyData; |
| import org.apache.chemistry.opencmis.commons.data.PropertyDateTime; |
| import org.apache.chemistry.opencmis.commons.data.PropertyId; |
| import org.apache.chemistry.opencmis.commons.data.PropertyString; |
| import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException; |
| |
| public final class FileShareUtils { |
| |
| private FileShareUtils() { |
| } |
| |
| /** |
| * Returns the boolean value of the given value or the default value if the |
| * given value is <code>null</code>. |
| */ |
| public static boolean getBooleanParameter(Boolean value, boolean def) { |
| if (value == null) { |
| return def; |
| } |
| |
| return value.booleanValue(); |
| } |
| |
| /** |
| * Converts milliseconds into a {@link GregorianCalendar} object, setting |
| * the timezone to GMT and cutting milliseconds off. |
| */ |
| public static GregorianCalendar millisToCalendar(long millis) { |
| GregorianCalendar result = new GregorianCalendar(); |
| result.setTimeZone(TimeZone.getTimeZone("GMT")); |
| result.setTimeInMillis((long) (Math.ceil((double) millis / 1000) * 1000)); |
| |
| return result; |
| } |
| |
| /** |
| * Splits a filter statement into a collection of properties. If |
| * <code>filter</code> is <code>null</code>, empty or one of the properties |
| * is '*' , an empty collection will be returned. |
| */ |
| public static Set<String> splitFilter(String filter) { |
| if (filter == null) { |
| return null; |
| } |
| |
| if (filter.trim().length() == 0) { |
| return null; |
| } |
| |
| Set<String> result = new HashSet<String>(); |
| for (String s : filter.split(",")) { |
| s = s.trim(); |
| if (s.equals("*")) { |
| return null; |
| } else if (s.length() > 0) { |
| result.add(s); |
| } |
| } |
| |
| // set a few base properties |
| // query name == id (for base type properties) |
| result.add(PropertyIds.OBJECT_ID); |
| result.add(PropertyIds.OBJECT_TYPE_ID); |
| result.add(PropertyIds.BASE_TYPE_ID); |
| |
| return result; |
| } |
| |
| /** |
| * Gets the type id from a set of properties. |
| */ |
| public static String getObjectTypeId(Properties properties) { |
| PropertyData<?> typeProperty = properties.getProperties().get(PropertyIds.OBJECT_TYPE_ID); |
| if (!(typeProperty instanceof PropertyId)) { |
| throw new CmisInvalidArgumentException("Type Id must be set!"); |
| } |
| |
| String typeId = ((PropertyId) typeProperty).getFirstValue(); |
| if (typeId == null) { |
| throw new CmisInvalidArgumentException("Type Id must be set!"); |
| } |
| |
| return typeId; |
| } |
| |
| /** |
| * Returns the first value of an id property. |
| */ |
| public static String getIdProperty(Properties properties, String name) { |
| PropertyData<?> property = properties.getProperties().get(name); |
| if (!(property instanceof PropertyId)) { |
| return null; |
| } |
| |
| return ((PropertyId) property).getFirstValue(); |
| } |
| |
| /** |
| * Returns the first value of a string property. |
| */ |
| public static String getStringProperty(Properties properties, String name) { |
| PropertyData<?> property = properties.getProperties().get(name); |
| if (!(property instanceof PropertyString)) { |
| return null; |
| } |
| |
| return ((PropertyString) property).getFirstValue(); |
| } |
| |
| /** |
| * Returns the first value of a datetime property. |
| */ |
| public static GregorianCalendar getDateTimeProperty(Properties properties, String name) { |
| PropertyData<?> property = properties.getProperties().get(name); |
| if (!(property instanceof PropertyDateTime)) { |
| return null; |
| } |
| |
| return ((PropertyDateTime) property).getFirstValue(); |
| } |
| } |