org.finos.tracdap.svc.meta.dal.IMetadataDal Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tracdap-svc-meta Show documentation
Show all versions of tracdap-svc-meta Show documentation
TRAC D.A.P. metadata service, stateless service component to answer the TRAC metadata API
/*
* Copyright 2022 Accenture Global Solutions Limited
*
* Licensed 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.
*/
package org.finos.tracdap.svc.meta.dal;
import org.finos.tracdap.metadata.*;
import java.util.List;
import java.util.UUID;
public interface IMetadataDal {
void start();
void stop();
List listTenants();
void saveBatchUpdate(String tenant, MetadataBatchUpdate batchUpdate);
void savePreallocatedIds(String tenant, List ids);
void savePreallocatedObjects(String tenant, List tags);
void saveNewObjects(String tenant, List tags);
void saveNewVersions(String tenant, List tags);
void saveNewTags(String tenant, List tags);
Tag loadObject(String tenant, TagSelector selector);
List loadObjects(String tenant, List selector);
List search(String tenant, SearchParameters searchParameters);
// -----------------------------------------------------------------------------------------------------------------
// ALTERNATE LOAD METHODS
// -----------------------------------------------------------------------------------------------------------------
// These two methods are functionally equivalent to loadObjects()
// They are used when the write service to load prior versions during object / tag updates
// It is fine to use the default versions, or implementations can override to provide different error handling
default List loadPriorObjects(String tenant, List selector) {
return loadObjects(tenant, selector);
}
default List loadPriorTags(String tenant, List selector) {
return loadObjects(tenant, selector);
}
// -----------------------------------------------------------------------------------------------------------------
// LEGACY LOAD API
// -----------------------------------------------------------------------------------------------------------------
// Legacy API for loading a single object with explicit versions
// This is just a convenience wrapper and should not be implemented separately
default Tag loadObject(String tenant, ObjectType objectType, UUID objectId, int objectVersion, int tagVersion) {
var selector = TagSelector.newBuilder()
.setObjectType(objectType)
.setObjectId(objectId.toString())
.setObjectVersion(objectVersion)
.setTagVersion(tagVersion)
.build();
return loadObject(tenant, selector);
}
}