This repository has been archived by the owner on May 7, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 781
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit of persistence extensions (#1872)
* Initial commit of persistence extensions Signed-off-by: Chris Jackson <[email protected]>
- Loading branch information
1 parent
057849a
commit f7ec19f
Showing
17 changed files
with
515 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
...ce/src/main/java/org/eclipse/smarthome/core/persistence/ModifiablePersistenceService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/** | ||
* Copyright (c) 2014-2016 by the respective copyright holders. | ||
* All rights reserved. This program and the accompanying materials | ||
* are made available under the terms of the Eclipse Public License v1.0 | ||
* which accompanies this distribution, and is available at | ||
* http://www.eclipse.org/legal/epl-v10.html | ||
*/ | ||
package org.eclipse.smarthome.core.persistence; | ||
|
||
import java.util.Date; | ||
|
||
import org.eclipse.smarthome.core.items.Item; | ||
import org.eclipse.smarthome.core.types.State; | ||
|
||
/** | ||
* This class provides an interface to the a {@link PersistenceService} to allow data to be stored | ||
* at a specific time. This allows bindings that interface to devices that store data internally, | ||
* and then periodically provide it to the server to be accommodated. | ||
* | ||
* @author Chris Jackson - Initial implementation and API | ||
* | ||
*/ | ||
public interface ModifiablePersistenceService extends QueryablePersistenceService { | ||
/** | ||
* <p> | ||
* Stores the historic item value. This allows the item, time and value to be specified. | ||
* </p> | ||
* <p> | ||
* Adding data with the same time as an existing record should update the current record value rather than adding a | ||
* new record. | ||
* </p> | ||
* <p> | ||
* Implementors should keep in mind that all registered {@link PersistenceService}s are called synchronously. Hence | ||
* long running operations should be processed asynchronously. E.g. <code>store</code> adds things to a queue which | ||
* is processed by some asynchronous workers (Quartz Job, Thread, etc.). | ||
* </p> | ||
* | ||
* @param item the data to be stored | ||
* @param date the date of the record | ||
* @param state the state to be recorded | ||
*/ | ||
void store(Item item, Date date, State state); | ||
|
||
/** | ||
* Removes data associated with an item from a persistence service. | ||
* If all data is removed for the specified item, the persistence service should free any resources associated with | ||
* the item (eg. remove any tables or delete files from the storage). | ||
* | ||
* @param filter the filter to apply to the data removal. ItemName can not be null. | ||
* @return true if the query executed successfully | ||
* @throws {@link IllegalArgumentException} if item name is null. | ||
*/ | ||
boolean remove(FilterCriteria filter) throws IllegalArgumentException; | ||
} |
54 changes: 54 additions & 0 deletions
54
...persistence/src/main/java/org/eclipse/smarthome/core/persistence/PersistenceItemInfo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/** | ||
* Copyright (c) 2014-2016 by the respective copyright holders. | ||
* All rights reserved. This program and the accompanying materials | ||
* are made available under the terms of the Eclipse Public License v1.0 | ||
* which accompanies this distribution, and is available at | ||
* http://www.eclipse.org/legal/epl-v10.html | ||
*/ | ||
package org.eclipse.smarthome.core.persistence; | ||
|
||
import java.util.Date; | ||
|
||
/** | ||
* This class provides information about an item that is stored in a persistence service. | ||
* It is used to return information about the item to the system | ||
* | ||
* @author Chris Jackson - Initial contribution | ||
* | ||
*/ | ||
public interface PersistenceItemInfo { | ||
/** | ||
* Returns the item name. | ||
* It should be noted that the item name is as stored in the persistence service and as such may not be linked to an | ||
* item. This may be the case if the item was removed from the system, but data still exists in the persistence | ||
* service. | ||
* | ||
* @return Item name | ||
*/ | ||
String getName(); | ||
|
||
/** | ||
* Returns a counter with the number of rows of data associated with the item | ||
* Note that this should be used as a guide to the amount of data and may note be 100% accurate. If accurate | ||
* information is required, the {@link QueryablePersistenceService#query} method should be used. | ||
* | ||
* @return count of the number of rows of data. May return null if the persistence service doesn't support this. | ||
*/ | ||
Integer getCount(); | ||
|
||
/** | ||
* Returns the earliest timestamp from data in the persistence database | ||
* | ||
* @return the earliest {@link Date} stored in the database. May return null if the persistence service doesn't | ||
* support this. | ||
*/ | ||
Date getEarliest(); | ||
|
||
/** | ||
* Returns the latest timestamp from data in the persistence database | ||
* | ||
* @return the latest {@link Date} stored in the database. May return null if the persistence service doesn't | ||
* support this. | ||
*/ | ||
Date getLatest(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.