From 38107cb7956b94100cbc5a766c7bbc12dc7154a2 Mon Sep 17 00:00:00 2001 From: tang peng Date: Fri, 25 Sep 2020 15:15:00 +0800 Subject: Added some tools for engine instance management Issue-ID: HOLMES-365 Signed-off-by: tang peng Change-Id: Ie57ca3eaa0ffda7c3f611b07293ceedd75d08a91 --- .../holmes/common/engine/dao/EngineEntityDao.java | 44 +++++++++++++ .../common/engine/dao/EngineEntityMapper.java | 35 ++++++++++ .../holmes/common/engine/entity/EngineEntity.java | 74 ++++++++++++++++++++++ .../common/engine/service/EngineEntityService.java | 31 +++++++++ .../service/impl/EngineEntityServiceImpl.java | 62 ++++++++++++++++++ 5 files changed, 246 insertions(+) create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityDao.java create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityMapper.java create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/engine/entity/EngineEntity.java create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/engine/service/EngineEntityService.java create mode 100644 holmes-actions/src/main/java/org/onap/holmes/common/engine/service/impl/EngineEntityServiceImpl.java (limited to 'holmes-actions/src/main') diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityDao.java b/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityDao.java new file mode 100644 index 0000000..42e0bf4 --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityDao.java @@ -0,0 +1,44 @@ +/** + * Copyright 2020 ZTE Corporation. + * + * 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.onap.holmes.common.engine.dao; + +import org.onap.holmes.common.engine.entity.EngineEntity; +import org.skife.jdbi.v2.sqlobject.Bind; +import org.skife.jdbi.v2.sqlobject.BindBean; +import org.skife.jdbi.v2.sqlobject.SqlQuery; +import org.skife.jdbi.v2.sqlobject.SqlUpdate; +import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; + +import java.util.List; + +@RegisterMapper(EngineEntityMapper.class) +public interface EngineEntityDao { + @SqlQuery("SELECT * FROM ENGINE_ENTITY WHERE ID = :id") + EngineEntity getEntity(@Bind("id") String id); + + @SqlQuery("SELECT * FROM ENGINE_ENTITY") + List getAllEntities(); + + @SqlUpdate("INSERT INTO ENGINE_ENTITY VALUES (:id, :ip, :port, :lastModified)") + void insertEntity(@BindBean EngineEntity entity); + + @SqlUpdate("UPDATE ENGINE_ENTITY SET LASTMODIFIED = :lastModified WHERE ID = :id") + void updateEntity(@BindBean EngineEntity entity); + + @SqlUpdate("DELETE FROM ENGINE_ENTITY WHERE ID = :id") + void deleteEntity(@Bind("id") String id); +} \ No newline at end of file diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityMapper.java b/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityMapper.java new file mode 100644 index 0000000..cda38a5 --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/engine/dao/EngineEntityMapper.java @@ -0,0 +1,35 @@ +/** + * Copyright 2020 ZTE Corporation. + * + * 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.onap.holmes.common.engine.dao; + +import org.onap.holmes.common.engine.entity.EngineEntity; +import org.skife.jdbi.v2.StatementContext; +import org.skife.jdbi.v2.tweak.ResultSetMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class EngineEntityMapper implements ResultSetMapper { + @Override + public EngineEntity map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { + EngineEntity entity = new EngineEntity(); + entity.setIp(resultSet.getString("ip")); + entity.setPort(resultSet.getInt("port")); + entity.setLastModified(resultSet.getLong("lastmodified")); + return entity; + } +} \ No newline at end of file diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/engine/entity/EngineEntity.java b/holmes-actions/src/main/java/org/onap/holmes/common/engine/entity/EngineEntity.java new file mode 100644 index 0000000..9822fbc --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/engine/entity/EngineEntity.java @@ -0,0 +1,74 @@ +/** + * Copyright 2020 ZTE Corporation. + * + * 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.onap.holmes.common.engine.entity; + +public class EngineEntity { + private String ip; + private int port; + private long lastModified; + + public EngineEntity(String ip, int port) { + this.ip = ip; + this.port = port; + this.lastModified = System.currentTimeMillis(); + } + + public EngineEntity() { + } + + public String getId() { + return ip + "_" + port; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public long getLastModified() { + return lastModified; + } + + public void setLastModified(long lastModified) { + this.lastModified = lastModified; + } + + @Override + public boolean equals(Object o) { + if (o == null || ! (o instanceof EngineEntity)) { + return false; + } + + return ((EngineEntity) o).getId().equals(getId()); + } + + @Override + public int hashCode() { + return getId().hashCode(); + } +} \ No newline at end of file diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/EngineEntityService.java b/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/EngineEntityService.java new file mode 100644 index 0000000..0baa4de --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/EngineEntityService.java @@ -0,0 +1,31 @@ +/** + * Copyright 2020 ZTE Corporation. + * + * 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.onap.holmes.common.engine.service; + +import org.glassfish.jersey.spi.Contract; +import org.onap.holmes.common.engine.entity.EngineEntity; + +import java.util.List; + +@Contract +public interface EngineEntityService { + EngineEntity getEntity(String id); + List getAllEntities(); + void updateEntity(EngineEntity entity); + void insertEntity(EngineEntity entity); + void deleteEntity(String id); +} diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/impl/EngineEntityServiceImpl.java b/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/impl/EngineEntityServiceImpl.java new file mode 100644 index 0000000..926af13 --- /dev/null +++ b/holmes-actions/src/main/java/org/onap/holmes/common/engine/service/impl/EngineEntityServiceImpl.java @@ -0,0 +1,62 @@ +/** + * Copyright 2020 ZTE Corporation. + * + * 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.onap.holmes.common.engine.service.impl; + +import org.jvnet.hk2.annotations.Service; +import org.onap.holmes.common.engine.dao.EngineEntityDao; +import org.onap.holmes.common.engine.entity.EngineEntity; +import org.onap.holmes.common.engine.service.EngineEntityService; +import org.onap.holmes.common.utils.DbDaoUtil; + +import javax.inject.Inject; +import java.util.List; + +@Service +public class EngineEntityServiceImpl implements EngineEntityService { + + private EngineEntityDao engineEntityDao; + + @Inject + public EngineEntityServiceImpl(DbDaoUtil dbDaoUtil){ + engineEntityDao = dbDaoUtil.getJdbiDaoByOnDemand(EngineEntityDao.class); + } + + @Override + public EngineEntity getEntity(String id) { + return engineEntityDao.getEntity(id); + } + + @Override + public List getAllEntities() { + return engineEntityDao.getAllEntities(); + } + + @Override + public void updateEntity(EngineEntity entity) { + engineEntityDao.updateEntity(entity); + } + + @Override + public void insertEntity(EngineEntity entity) { + engineEntityDao.insertEntity(entity); + } + + @Override + public void deleteEntity(String id) { + engineEntityDao.deleteEntity(id); + } +} -- cgit 1.2.3-korg