View Javadoc

1   /*
2    *  
3    *  Fosstrak LLRP Commander (www.fosstrak.org)
4    * 
5    *  Copyright (C) 2008 ETH Zurich
6    *
7    *  This program is free software: you can redistribute it and/or modify
8    *  it under the terms of the GNU General Public License as published by
9    *  the Free Software Foundation, either version 3 of the License, or
10   *  (at your option) any later version.
11   *
12   *  This program is distributed in the hope that it will be useful,
13   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   *  GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License
18   *  along with this program.  If not, see <http://www.gnu.org/licenses/> 
19   *
20   */
21  
22  package org.fosstrak.llrp.client;
23  
24  import java.sql.Connection;
25  import java.util.ArrayList;
26  import java.util.Map;
27  
28  import org.fosstrak.llrp.adaptor.exception.LLRPRuntimeException;
29  
30  /**
31   * This single access point for Reader Management module to access the message
32   * repository. The instance class will be initiated in ResourceCenter.
33   *
34   * @author Haoning Zhang
35   * @version 1.0
36   */
37  
38  public interface Repository {
39  
40  	/** flag to set the retrieval of messages to all messages in the repo. */
41  	public static final int RETRIEVE_ALL = -1;
42  	
43  	/**
44  	 * Initializer method for the repository. The method will be called directly 
45  	 * after instantiation.
46  	 * @param args hash-map with the parameters.
47  	 * @throws when there is a problem with initialization (eg. missing param).
48  	 */
49  	public void initialize(Map<String, String> args) 
50  		throws LLRPRuntimeException;
51  	
52  	/**
53  	 * @return a hash map with the properties passed by the initializer.
54  	 */
55  	public Map<String, String> getArgs();
56  	
57  	/**
58  	 * Closing the repository.
59  	 */
60  	public void close();
61  	
62  	/**
63  	 * @return true if the repository is OK, false otherwise.
64  	 */
65  	public boolean isHealth();
66  	
67  	/**
68  	 * Get the LLRP Message Item from repository according to the unique Message ID.
69  	 * 
70  	 * @param aMsgSysId The unique message ID
71  	 * @return LLRP Message Wrapper Item
72  	 */
73  	public LLRPMessageItem get(String aMsgSysId);
74  	
75  	/**
76  	 * Put the LLRP Message Item to the repository
77  	 * 
78  	 * @param aMessage LLRP Message Wrapper Item
79  	 */
80  	public void put(LLRPMessageItem aMessage);
81  	
82  	/**
83  	 * returns all the messages from the specified adaptor and the reader 
84  	 * limited by num. if you set num to RETRIEVE_ALL all messages get returned.
85  	 * if you set readerName to null, all the messages of all the readers with 
86  	 * adaptor adaptorName will be returned.
87  	 * @param adaptorName the name of the adaptor.
88  	 * @param readerName the name of the reader.
89  	 * @param num how many messages to retrieve.
90  	 * @param content if true retrieve the message content, false no content.
91  	 * @return a list of messages.
92  	 */
93  	public ArrayList<LLRPMessageItem> get(
94  			String adaptorName, String readerName, int num, boolean content);
95  	
96  	/**
97  	 * returns the number of messages in the repository to a given filter.
98  	 * @param adaptor the name of the adaptor to filter. if null all the 
99  	 * messages in the repository get return.
100 	 * @param reader the name of the reader to filter. if null all the 
101 	 * messages of the given adaptor will be returned.
102 	 * @return the number of messages in the repository.
103 	 */
104 	public int count(String adaptor, String reader);
105 	
106 	/**
107 	 * Clear all the items in repository.
108 	 */
109 	public void clearAll();
110 	
111 	/**
112 	 * clear all the items that belong to a given adapter.
113 	 * @param adapter the name of the adapter to clear.
114 	 */
115 	public void clearAdapter(String adapter);
116 	
117 	/**
118 	 * clear all the items that belong to a given reader on a given adapter.
119 	 * @param adapter the name of the adapter where the reader belongs to.
120 	 * @param reader the name of the reader to clear.
121 	 */
122 	public void clearReader(String adapter, String reader);
123 	
124 	/**
125 	 * @return a handle to the database connection. users of the repository are 
126 	 * allowed to use the database for their own purposes.
127 	 */
128 	public Connection getDBConnection();
129 	
130 	/**
131 	 * The {@link ROAccessReportsRepository} is implemented via the strategy 
132 	 * pattern. Depending on the type of the repository, you will get a 
133 	 * different implementation of this handle at runtime. The respective 
134 	 * implementation will setup the data-structures used to log 
135 	 * RO_ACCESS_REPORTS and ease the access to the stored information.
136 	 * 
137 	 * @return a handle to the RO_ACCESS_REPORTS repository. if the 
138 	 * implementation of the repository does not implement this functionality, 
139 	 * it shall return <code>null</code>.
140 	 */
141 	public ROAccessReportsRepository getROAccessRepository();
142 }