View Javadoc

1   /*
2    * Copyright 2010 FatWire Corporation. All Rights Reserved.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *    http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.fatwire.gst.foundation.wra;
17  
18  import com.fatwire.assetapi.data.AssetId;
19  import com.fatwire.gst.foundation.controller.AssetIdWithSite;
20  import com.fatwire.gst.foundation.facade.assetapi.asset.TemplateAsset;
21  
22  /**
23   * Dao for dealing with core fields in a WRA This DAO is not aware of Aliases.
24   * To work with Alias assets, see {@link AliasCoreFieldDao}.}
25   * 
26   * @author Tony Field
27   * @author Dolf Dijkstra
28   * @since Jul 21, 2010
29   */
30  public interface WraCoreFieldDao {
31  
32      public static String[] WRA_ATTRIBUTE_NAMES = { "metatitle", "metadescription", "metakeyword", "h1title",
33              "linktext", "path", "template", "id", "name", "subtype", "startdate", "enddate", "status" };
34      public static String[] VANITY_ATTRIBUTE_NAMES = { "path", "template", "id", "name", "subtype", "startdate",
35              "enddate", "status" };
36  
37      /**
38       * Method to test whether or not an asset is web-referenceable.
39       * 
40       * @param id asset ID to check
41       * @return true if the asset is a valid web-referenceable asset, false if it
42       *         is not
43       */
44      public boolean isWebReferenceable(AssetId id);
45  
46      /**
47       * Method to test whether or not an asset is web-referenceable.
48       *
49       * @param candidate asset to check for web-referenceable support.
50       * @return true if the asset is a valid web-referenceable asset, false if it
51       *         is not
52       */
53      public boolean isWebReferenceable(TemplateAsset candidate);
54  
55      /**
56       * Method to test whether or not an asset is web-referenceable. 
57       *
58       * @param candidate asset to check for web-referenceable support.
59       * @return true if the asset is a valid web-referenceable asset, false if it
60       *         is not
61       */
62      public boolean isWebReferenceable(WebReferenceableAsset candidate);
63  
64      /**
65       * Method to test if an asset has a vanity url, that is has a path field.
66       * 
67       * @param id asset ID to check
68       * @return true if the asset has a vanity url, false if it is not
69       */
70      public boolean isVanityAsset(AssetId id);
71  
72      /**
73       * Return a web referenceable asset bean given an input id. Required fields
74       * must be set or an exception is thrown.
75       * 
76       * @param id asset id
77       * @return WebReferenceableAsset, never null
78       * @see #isWebReferenceable
79       */
80      public WebReferenceableAsset getWra(AssetId id);
81  
82      /**
83       * Locate the page that contains the specified Web-Referenceable Asset.
84       * <p/>
85       * A WRA is supposed to just be placed on one page (in the unnamed
86       * association block), and this method locates it. If it is not found, 0L is
87       * returned.
88       * <p/>
89       * If multiple matches are found, a warning is logged and the first one is
90       * returned.
91       * 
92       * @param wraAssetIdWithSite id of the web-referenceable asset. Site is
93       *            included
94       * @return page asset ID or 0L.
95       */
96      public long findP(AssetIdWithSite wraAssetIdWithSite);
97  
98      /**
99       * @param c
100      * @param cid
101      * @return the name of the site that this asset belongs to.
102      */
103     public String resolveSite(String c, String cid);
104 
105     /**
106      * @param id
107      * @return the VanityAsset for the id, null is not found or not a VanityAsset
108      */
109     public VanityAsset getVanityWra(AssetId id);
110 
111 }