Jakub Niedermertl has uploaded a new change for review. Change subject: core: VmIcons DAO for the REST part ......................................................................
core: VmIcons DAO for the REST part DAO methods necessary for efficient implementation of Vm Icons REST interface. Change-Id: I765eafe88cbb6f9d0c0fb8019970a6c7134ceddd Bug-Url: https://bugzilla.redhat.com/1103175 Signed-off-by: Jakub Niedermertl <jnied...@redhat.com> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDaoImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDaoImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDaoTest.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDefaultDaoTest.java M packaging/dbscripts/vm_icons_sp.sql 7 files changed, 70 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/42046/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDao.java index 427bc00..f9e557b 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDao.java @@ -24,4 +24,6 @@ public Guid ensureIconInDatabase(final String icon); public void removeAllUnusedIcons(); + + public boolean exists(Guid id); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDaoImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDaoImpl.java index 3d58489..0b6516b 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDaoImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDaoImpl.java @@ -85,4 +85,15 @@ getCallsHandler().executeModification("DeleteAllUnusedVmIcons", getCustomMapSqlParameterSource()); } + + @Override + public boolean exists(Guid id) { + return getCallsHandler().executeRead("ExistsVmIconByVmIconId", + new RowMapper<Boolean>() { + @Override public Boolean mapRow(ResultSet rs, int rowNum) throws SQLException { + return rs.getBoolean(1); + } + }, + getCustomMapSqlParameterSource().addValue(ID_COLUMN, id)); + } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDao.java index e383786..9e5c3ae 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDao.java @@ -9,5 +9,7 @@ List<VmIconDefault> getByLargeIconId(Guid largeIconId); + VmIconDefault getByOperatingSystemId(int osId); + void removeAll(); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDaoImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDaoImpl.java index 21c7001..c3ebfe1 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDaoImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmIconDefaultDaoImpl.java @@ -37,6 +37,11 @@ getCallsHandler().executeModification("DeleteAllFromVmIconDefaults", getCustomMapSqlParameterSource()); } + @Override public VmIconDefault getByOperatingSystemId(int osId) { + return getCallsHandler().executeRead("GetVmIconDefaultByVmIconDefaultOsId", createEntityRowMapper(), + getCustomMapSqlParameterSource().addValue(OS_ID_COLUMN, osId)); + } + @Override protected MapSqlParameterSource createFullParametersMapper(VmIconDefault entity) { return createIdParameterMapper(entity.getId()) diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDaoTest.java index b12c257..c37fc72 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDaoTest.java @@ -7,6 +7,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -20,6 +21,7 @@ private static final String OTHER_SMALL_DATAURL = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QC0RXhpZgAASUkqAAgAAAAGAD4BBQACAAAAVgAAAD8BBQAGAAAAZgAAAAIDAgAWAAAAlgAAABBRAQABAAAAAQAAABFRBAABAAAAEwsAABJRBAABAAAAEwsAAAAAAAAlegAAoIYBAIOAAACghgEA//kAAKCGAQDpgAAAoIYBADB1AACghgEAYOoAAKCGAQCYOgAAoIYBAG8XAACghgEAUGhvdG9zaG9wIElDQyBwcm9maWxlAP/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAA! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ! 0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCS rJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspn! SnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm! 6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACsAKwMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6ws PExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEB! AAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APaPE17qen6DcXOk20U9zGpJEr7QigZLY/iI9Mj+leX23jzxXBpLW8rQee2GjuLiE+YFYbgduQOhBBI6djXrGuDPh/Uh/wBOsn/oJrxu5jWbUrVZN+yWO1BLjGV8tBnHUD681wY2pOnZxZ6+W0qdVNTW2vmQL438ZWg3DUhKhPV4VIP5irMfxe8R2oCXNtYSn1eJ1J/JsfpU02oXL+Ijp8gU2ZmEBtSo27OnT175qlaJbLCLJUtGm8+RWju0x9qXOFCSdiOn1rjjXneykd08NTtdxR3Xgvx5q/i26aNdChW2iIE92t0QqEjIAUrktjtnvyRXfV5t8H4xFYa0uzYReAFe4IRRg16TXq0JOVNSfU8PFwjCs4RVrFDXP+QBqP8A17Sf+gmvGNTyboFsBvIgyAQcHyU9OM17Prf/ACANR/69pP8A0E14xqShblQAB+4g4GMf6lPSuLMvhR6mTby/rsRXXiGe2hNxN9nWVV2fajFmTHQAHuaz7PXJFgEUSRyfZ3LILmHLwMecjPr1qSVVK5dVYL8wDDuKy7NC9v8Aa5JPMmucO7jpjsB7AV5im7XvqevKmublSVv6/wA/zPVfhESdP1hmJLNdqST3JRc16NXnPwjx/Z2r4P8Ay9L/AOi1r0avewv8GJ8vmH+8y/roQ3kP2izmh2I4kUqVfowPUGuFn8H6RcXDO93fQMuFaF3G! VwMAZIzjAGK9AppjRmDFFLDuRzWlSlCp8auYUq9Si705WOHh8DaEwH7m9uPcysB+gFX4fA2hpj/iTQH3lct/WuroqVh6S2ivuLli8RLeb+9mfpek2uko8dpbW9vG53MkMe3J6ZPrxWhRRWqSWiMG23dn/9k="; private static final Guid OTHER_SMALL_ICON_ID = new Guid("38fc5e1a-f96b-339b-9894-def6f366daf5"); private static final Guid UNUSED_ICON_ID = new Guid("e4c72730-0264-4201-8373-97efd65811e6"); + private static final Guid NON_EXISTING_ICON_ID = Guid.Empty; @Override protected VmIcon generateNewEntity() { @@ -88,4 +90,14 @@ assertNotNull(usedIcon); reinitializeDatabase(); } + + @Test + public void testExistsExisting() { + assertTrue(prepareDao().exists(UNUSED_ICON_ID)); + } + + @Test + public void testExistsNonExisting() { + assertFalse(prepareDao().exists(NON_EXISTING_ICON_ID)); + } } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDefaultDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDefaultDaoTest.java index a8e29b9..94cefbc 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDefaultDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmIconDefaultDaoTest.java @@ -6,6 +6,8 @@ import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class VmIconDefaultDaoTest extends BaseGenericDaoTestCase<Guid, VmIconDefault, VmIconDefaultDao> { @@ -64,4 +66,16 @@ final List<VmIconDefault> result = prepareDao().getByLargeIconId(LARGE_ICON_ID); assertTrue(result.contains(OTHER_OS_VM_ICON_DEFAULT)); } + + @Test + public void testGetByOperatingSystemIdExisting() { + final VmIconDefault vmIconDefault = prepareDao().getByOperatingSystemId(OTHER_OS_VM_ICON_DEFAULT.getOsId()); + assertEquals(OTHER_OS_VM_ICON_DEFAULT, vmIconDefault); + } + + @Test + public void testGetByOperatingSystemIdNonExisting() { + final VmIconDefault vmIconDefault = prepareDao().getByOperatingSystemId(-1); + assertNull(vmIconDefault); + } } diff --git a/packaging/dbscripts/vm_icons_sp.sql b/packaging/dbscripts/vm_icons_sp.sql index 95e8757..0c8b20b 100644 --- a/packaging/dbscripts/vm_icons_sp.sql +++ b/packaging/dbscripts/vm_icons_sp.sql @@ -104,6 +104,18 @@ END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION ExistsVmIconByVmIconId(v_id UUID) + RETURNS BOOLEAN STABLE +AS $procedure$ +BEGIN + RETURN ( + SELECT EXISTS( + SELECT * + FROM vm_icons + WHERE id = v_id + )); +END; $procedure$ +LANGUAGE plpgsql; -- VmIconDefaults vm_icon_defaults @@ -187,6 +199,17 @@ END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION GetVmIconDefaultByVmIconDefaultOsId(v_os_id INTEGER) + RETURNS SETOF vm_icon_defaults STABLE +AS $procedure$ +BEGIN + RETURN QUERY + SELECT * + FROM vm_icon_defaults + WHERE os_id = v_os_id; +END; $procedure$ +LANGUAGE plpgsql; + Create or replace FUNCTION DeleteAllFromVmIconDefaults() RETURNS VOID AS $procedure$ @@ -194,4 +217,4 @@ DELETE FROM vm_icon_defaults; END; $procedure$ -LANGUAGE plpgsql; \ No newline at end of file +LANGUAGE plpgsql; -- To view, visit https://gerrit.ovirt.org/42046 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I765eafe88cbb6f9d0c0fb8019970a6c7134ceddd Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Jakub Niedermertl <jnied...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches