1414// KIND, either express or implied. See the License for the
1515// specific language governing permissions and limitations
1616// under the License.
17- package org .apache .cloudstack .storage .image .db ;
17+ package org .apache .cloudstack .storage .datastore .db ;
1818
1919import java .util .HashMap ;
2020import java .util .List ;
2121import java .util .Map ;
2222
23-
2423import org .springframework .stereotype .Component ;
2524
26- import org .apache .cloudstack .api .ApiConstants ;
27- import org .apache .cloudstack .storage .datastore .db .ImageStoreDetailVO ;
28- import org .apache .cloudstack .storage .datastore .db .ImageStoreDetailsDao ;
29-
3025import com .cloud .utils .crypt .DBEncryptionUtil ;
31- import com .cloud .utils .db .GenericDaoBase ;
26+ import com .cloud .utils .db .QueryBuilder ;
3227import com .cloud .utils .db .SearchBuilder ;
3328import com .cloud .utils .db .SearchCriteria ;
29+ import com .cloud .utils .db .SearchCriteria .Op ;
3430import com .cloud .utils .db .TransactionLegacy ;
3531
32+ import org .apache .cloudstack .api .ApiConstants ;
33+ import org .apache .cloudstack .framework .config .ConfigKey ;
34+ import org .apache .cloudstack .framework .config .ConfigKey .Scope ;
35+ import org .apache .cloudstack .framework .config .ScopedConfigStorage ;
36+ import org .apache .cloudstack .resourcedetail .ResourceDetailsDaoBase ;
37+
3638@ Component
37- public class ImageStoreDetailsDaoImpl extends GenericDaoBase <ImageStoreDetailVO , Long > implements ImageStoreDetailsDao {
39+ public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase <ImageStoreDetailVO > implements ImageStoreDetailsDao , ScopedConfigStorage {
3840
3941 protected final SearchBuilder <ImageStoreDetailVO > storeSearch ;
4042
41- protected ImageStoreDetailsDaoImpl () {
43+ public ImageStoreDetailsDaoImpl () {
4244 super ();
4345 storeSearch = createSearchBuilder ();
44- storeSearch .and ("store" , storeSearch .entity ().getStoreId (), SearchCriteria .Op .EQ );
46+ storeSearch .and ("store" , storeSearch .entity ().getResourceId (), SearchCriteria .Op .EQ );
4547 storeSearch .done ();
4648 }
4749
@@ -54,7 +56,7 @@ public void update(long storeId, Map<String, String> details) {
5456 txn .start ();
5557 expunge (sc );
5658 for (Map .Entry <String , String > entry : details .entrySet ()) {
57- ImageStoreDetailVO detail = new ImageStoreDetailVO (storeId , entry .getKey (), entry .getValue ());
59+ ImageStoreDetailVO detail = new ImageStoreDetailVO (storeId , entry .getKey (), entry .getValue (), true );
5860 persist (detail );
5961 }
6062 txn .commit ();
@@ -88,7 +90,30 @@ public void deleteDetails(long storeId) {
8890 for (ImageStoreDetailVO result : results ) {
8991 remove (result .getId ());
9092 }
93+ }
94+
95+ @ Override
96+ public Scope getScope () {
97+ return ConfigKey .Scope .ImageStore ;
98+ }
99+
100+ @ Override
101+ public ImageStoreDetailVO findDetail (long storeId , String name ) {
102+ QueryBuilder <ImageStoreDetailVO > sc = QueryBuilder .create (ImageStoreDetailVO .class );
103+ sc .and (sc .entity ().getResourceId (), Op .EQ , storeId );
104+ sc .and (sc .entity ().getName (), Op .EQ , name );
105+ return sc .find ();
106+ }
91107
108+ @ Override
109+ public String getConfigValue (long id , ConfigKey <?> key ) {
110+ ImageStoreDetailVO vo = findDetail (id , key .key ());
111+ return vo == null ? null : vo .getValue ();
112+ }
113+
114+ @ Override
115+ public void addDetail (long resourceId , String key , String value , boolean display ) {
116+ super .addDetail (new ImageStoreDetailVO (resourceId , key , value , display ));
92117 }
93118
94119}
0 commit comments