| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. 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. For additional information regarding |
| * copyright in this work, please see the NOTICE file in the top level |
| * directory of this distribution. |
| */ |
| package org.apache.abdera2.activities.protocol.managed; |
| |
| import java.util.Map; |
| import java.util.Properties; |
| |
| import org.apache.abdera2.common.protocol.CollectionInfo; |
| import org.apache.abdera2.common.protocol.RequestContext; |
| |
| public class FeedConfiguration extends Configuration implements CollectionInfo { |
| public static final String PROP_NAME_ADAPTER_CLASS = "adapterClassName"; |
| public static final String PROP_SUB_URI_NAME = "subUri"; |
| public static final String PROP_AUTHOR_NAME = "author"; |
| public static final String PROP_TITLE_NAME = "title"; |
| public static final String PROP_ACCEPTS = "accepts"; |
| public static final String PROP_ENTRY_TITLE_NAME = "entryTitle"; |
| public static final String PROP_FEED_CONFIG_LOCATION_NAME = "configFile"; |
| |
| public static final String ENTRY_ELEM_NAME_ID = "id"; |
| public static final String ENTRY_ELEM_NAME_TITLE = "title"; |
| public static final String ENTRY_ELEM_NAME_CONTENT = "content"; |
| public static final String ENTRY_ELEM_NAME_AUTHOR = "author"; |
| public static final String ENTRY_ELEM_NAME_UPDATED = "updated"; |
| public static final String ENTRY_ELEM_NAME_LINK = "link"; |
| |
| private final String feedId; |
| private final String subUri; |
| private final String adapterClassName; |
| private final String feedConfigLocation; |
| private final ServerConfiguration serverConfiguration; |
| private String feedTitle = "unknown"; |
| private String feedAuthor = "unknown"; |
| private Map<Object, Object> optionalProperties; |
| private final CollectionAdapterConfiguration adapterConfiguration; |
| |
| public FeedConfiguration(String feedId, |
| String subUri, |
| String adapterClassName, |
| String feedConfigLocation, |
| ServerConfiguration serverConfiguration) { |
| this.feedId = feedId; |
| this.subUri = subUri; |
| this.adapterClassName = adapterClassName; |
| this.feedConfigLocation = feedConfigLocation; |
| this.adapterConfiguration = new CollectionAdapterConfiguration(serverConfiguration, feedConfigLocation); |
| this.serverConfiguration = serverConfiguration; |
| } |
| |
| public static FeedConfiguration getFeedConfiguration(String feedId, |
| Properties properties, |
| ServerConfiguration serverConfiguration) { |
| FeedConfiguration feedConfiguration = |
| new FeedConfiguration(feedId, Configuration.getProperty(properties, PROP_SUB_URI_NAME), Configuration |
| .getProperty(properties, PROP_NAME_ADAPTER_CLASS), Configuration |
| .getProperty(properties, PROP_FEED_CONFIG_LOCATION_NAME), serverConfiguration); |
| if (properties.containsKey(PROP_AUTHOR_NAME)) { |
| feedConfiguration.setFeedAuthor(Configuration.getProperty(properties, PROP_AUTHOR_NAME)); |
| } |
| |
| if (properties.containsKey(PROP_TITLE_NAME)) { |
| feedConfiguration.setFeedTitle(Configuration.getProperty(properties, PROP_TITLE_NAME)); |
| } |
| feedConfiguration.optionalProperties = properties; |
| return feedConfiguration; |
| } |
| |
| public String getAdapterClassName() { |
| return adapterClassName; |
| } |
| |
| public String getFeedAuthor() { |
| return feedAuthor; |
| } |
| |
| public String getFeedConfigLocation() { |
| return feedConfigLocation; |
| } |
| |
| public String getFeedId() { |
| return feedId; |
| } |
| |
| public String getFeedTitle() { |
| return feedTitle; |
| } |
| |
| public String getSubUri() { |
| return subUri; |
| } |
| |
| public void setFeedAuthor(String feedAuthor) { |
| this.feedAuthor = feedAuthor; |
| } |
| |
| public void setFeedTitle(String feedTitle) { |
| this.feedTitle = feedTitle; |
| } |
| |
| public String getFeedUri() { |
| return serverConfiguration.getServerUri() + "/" + getSubUri(); |
| } |
| |
| public boolean hasProperty(String key) { |
| return optionalProperties.containsKey(key); |
| } |
| |
| public Object getProperty(String key) { |
| return optionalProperties.get(key); |
| } |
| |
| public CollectionAdapterConfiguration getAdapterConfiguration() { |
| return adapterConfiguration; |
| } |
| |
| public String[] getAccepts(RequestContext request) { |
| Object accepts = optionalProperties.get(PROP_ACCEPTS); |
| if (accepts == null || !(accepts instanceof String)) |
| return new String[] {"application/json"}; |
| return ((String)accepts).split("\\s*,\\s*"); |
| } |
| |
| public String getHref(RequestContext request) { |
| return getFeedUri(); |
| } |
| |
| public String getTitle(RequestContext request) { |
| return getFeedTitle(); |
| } |
| |
| public ServerConfiguration getServerConfiguration() { |
| return adapterConfiguration.getServerConfiguration(); |
| } |
| } |