Improve Data Update Service.
This commit is contained in:
parent
d4208ec2e7
commit
eb33ffcc4a
@ -23,7 +23,7 @@ import org.springframework.context.ApplicationContext;
|
|||||||
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.annotation.Profile;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.server.service.component.ComponentDiscoveryService;
|
import org.thingsboard.server.service.component.ComponentDiscoveryService;
|
||||||
import org.thingsboard.server.service.install.DataUpdateService;
|
import org.thingsboard.server.service.install.update.DataUpdateService;
|
||||||
import org.thingsboard.server.service.install.DatabaseUpgradeService;
|
import org.thingsboard.server.service.install.DatabaseUpgradeService;
|
||||||
import org.thingsboard.server.service.install.EntityDatabaseSchemaService;
|
import org.thingsboard.server.service.install.EntityDatabaseSchemaService;
|
||||||
import org.thingsboard.server.service.install.SystemDataLoaderService;
|
import org.thingsboard.server.service.install.SystemDataLoaderService;
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.service.install;
|
package org.thingsboard.server.service.install.update;
|
||||||
|
|
||||||
public interface DataUpdateService {
|
public interface DataUpdateService {
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.service.install;
|
package org.thingsboard.server.service.install.update;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -27,6 +27,7 @@ import org.thingsboard.server.common.data.page.TextPageLink;
|
|||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.dao.rule.RuleChainService;
|
import org.thingsboard.server.dao.rule.RuleChainService;
|
||||||
import org.thingsboard.server.dao.tenant.TenantService;
|
import org.thingsboard.server.dao.tenant.TenantService;
|
||||||
|
import org.thingsboard.server.service.install.InstallScripts;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Profile("install")
|
@Profile("install")
|
||||||
@ -75,29 +76,4 @@ public class DefaultDataUpdateService implements DataUpdateService {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public abstract class PaginatedUpdater<I, D extends SearchTextBased<? extends UUIDBased>> {
|
|
||||||
|
|
||||||
private static final int DEFAULT_LIMIT = 100;
|
|
||||||
|
|
||||||
public void updateEntities(I id) {
|
|
||||||
TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT);
|
|
||||||
boolean hasNext = true;
|
|
||||||
while (hasNext) {
|
|
||||||
TextPageData<D> entities = findEntities(id, pageLink);
|
|
||||||
for (D entity : entities.getData()) {
|
|
||||||
updateEntity(entity);
|
|
||||||
}
|
|
||||||
hasNext = entities.hasNext();
|
|
||||||
if (hasNext) {
|
|
||||||
pageLink = entities.getNextPageLink();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract TextPageData<D> findEntities(I id, TextPageLink pageLink);
|
|
||||||
|
|
||||||
protected abstract void updateEntity(D entity);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* 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.thingsboard.server.service.install.update;
|
||||||
|
|
||||||
|
import org.thingsboard.server.common.data.SearchTextBased;
|
||||||
|
import org.thingsboard.server.common.data.id.UUIDBased;
|
||||||
|
import org.thingsboard.server.common.data.page.TextPageData;
|
||||||
|
import org.thingsboard.server.common.data.page.TextPageLink;
|
||||||
|
|
||||||
|
public abstract class PaginatedUpdater<I, D extends SearchTextBased<? extends UUIDBased>> {
|
||||||
|
|
||||||
|
private static final int DEFAULT_LIMIT = 100;
|
||||||
|
|
||||||
|
public void updateEntities(I id) {
|
||||||
|
TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT);
|
||||||
|
boolean hasNext = true;
|
||||||
|
while (hasNext) {
|
||||||
|
TextPageData<D> entities = findEntities(id, pageLink);
|
||||||
|
for (D entity : entities.getData()) {
|
||||||
|
updateEntity(entity);
|
||||||
|
}
|
||||||
|
hasNext = entities.hasNext();
|
||||||
|
if (hasNext) {
|
||||||
|
pageLink = entities.getNextPageLink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract TextPageData<D> findEntities(I id, TextPageLink pageLink);
|
||||||
|
|
||||||
|
protected abstract void updateEntity(D entity);
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user