@Override @DB @ActionEvent(eventType = EventTypes.EVENT_GUEST_OS_ADD, eventDescription = "Adding new guest OS type", create = true) public GuestOS addGuestOs(final AddGuestOsCmd cmd) { final Long categoryId = cmd.getOsCategoryId(); final String displayName = cmd.getOsDisplayName(); final String name = cmd.getOsName(); final GuestOSCategoryVO guestOsCategory = ApiDBUtils.findGuestOsCategoryById(categoryId); if (guestOsCategory == null) { throw new InvalidParameterValueException("Guest OS category not found. Please specify a valid Guest OS category"); } final GuestOS guestOs = ApiDBUtils.findGuestOSByDisplayName(displayName); if (guestOs != null) { throw new InvalidParameterValueException("The specified Guest OS name : " + displayName + " already exists. Please specify a unique name"); } s_logger.debug("GuestOSDetails"); final GuestOSVO guestOsVo = new GuestOSVO(); guestOsVo.setCategoryId(categoryId.longValue()); guestOsVo.setDisplayName(displayName); guestOsVo.setName(name); guestOsVo.setIsUserDefined(true); final GuestOS guestOsPersisted = _guestOSDao.persist(guestOsVo); if (cmd.getDetails() != null && !cmd.getDetails().isEmpty()) { Map<String, String> detailsMap = cmd.getDetails(); for (Object key : detailsMap.keySet()) { _guestOsDetailsDao.addDetail(guestOsPersisted.getId(), (String)key, detailsMap.get(key), false); } } return guestOsPersisted; }