Fixed the issue for metadata not getting updated and also the refresh of

page not displaying the distribution details in deployment and
distribution view.

Signed-off-by: Gaurav <gaurav.sahay@in.bosch.com>
This commit is contained in:
Gaurav
2016-07-28 14:07:19 +02:00
parent 5bc4b04039
commit bf28a8dde8
12 changed files with 1936 additions and 1958 deletions

View File

@@ -24,6 +24,7 @@ import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldExc
import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action;
import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetFilter; import org.eclipse.hawkbit.repository.model.DistributionSetFilter;
import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSetTag;
import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
@@ -32,7 +33,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
import org.eclipse.hawkbit.repository.model.Tag; import org.eclipse.hawkbit.repository.model.Tag;
import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -284,6 +284,16 @@ public interface DistributionSetManagement {
Page<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(@NotNull Long distributionSetId, Page<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(@NotNull Long distributionSetId,
@NotNull Pageable pageable); @NotNull Pageable pageable);
/**
* finds all meta data by the given distribution set id.
*
* @param distributionSetId
* the distribution set id to retrieve the meta data from
* @return list of distributionSetMetadata for a given distribution set Id
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
List<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(@NotNull Long distributionSetId);
/** /**
* finds all meta data by the given distribution set id. * finds all meta data by the given distribution set id.
* *

View File

@@ -483,4 +483,22 @@ public interface SoftwareManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY) @PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
SoftwareModuleType updateSoftwareModuleType(@NotNull SoftwareModuleType sm); SoftwareModuleType updateSoftwareModuleType(@NotNull SoftwareModuleType sm);
/**
* finds all meta data by the given software module id.
*
* @param softwareModuleId
* the software module id to retrieve the meta data from
*
* @throws RSQLParameterUnsupportedFieldException
* if a field in the RSQL string is used but not provided by the
* given {@code fieldNameProvider}
* @throws RSQLParameterSyntaxException
* if the RSQL syntax is wrong
* @return result of all meta data entries for a given software
* module id
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
List<SoftwareModuleMetadata> findSoftwareModuleMetadataBySoftwareModuleId(Long softwareModuleId);
} }

View File

@@ -173,39 +173,36 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
@Override @Override
@Modifying @Modifying
@Transactional(isolation = Isolation.READ_UNCOMMITTED) @Transactional(isolation = Isolation.READ_UNCOMMITTED)
public void deleteDistributionSet(final Long... distributionSetIDs) { public void deleteDistributionSet(final Long... distributionSetIDs) {
final List<Long> toHardDelete = new ArrayList<>(); final List<Long> toHardDelete = new ArrayList<>();
final List<Long> assigned = distributionSetRepository final List<Long> assigned = distributionSetRepository
.findAssignedToTargetDistributionSetsById(distributionSetIDs); .findAssignedToTargetDistributionSetsById(distributionSetIDs);
assigned.addAll(distributionSetRepository assigned.addAll(distributionSetRepository.findAssignedToRolloutDistributionSetsById(distributionSetIDs));
.findAssignedToRolloutDistributionSetsById(distributionSetIDs));
// soft delete assigned // soft delete assigned
if (!assigned.isEmpty()) { if (!assigned.isEmpty()) {
distributionSetRepository.deleteDistributionSet(assigned distributionSetRepository.deleteDistributionSet(assigned.toArray(new Long[assigned.size()]));
.toArray(new Long[assigned.size()])); }
}
// mark the rest as hard delete // mark the rest as hard delete
for (final Long setId : distributionSetIDs) { for (final Long setId : distributionSetIDs) {
if (!assigned.contains(setId)) { if (!assigned.contains(setId)) {
toHardDelete.add(setId); toHardDelete.add(setId);
} }
} }
// hard delete the rest if exixts // hard delete the rest if exixts
if (!toHardDelete.isEmpty()) { if (!toHardDelete.isEmpty()) {
// don't give the delete statement an empty list, JPA/Oracle cannot // don't give the delete statement an empty list, JPA/Oracle cannot
// handle the empty list // handle the empty list
distributionSetRepository.deleteByIdIn(toHardDelete); distributionSetRepository.deleteByIdIn(toHardDelete);
} }
afterCommit.afterCommit(() -> eventBus afterCommit.afterCommit(
.post(new DistributionDeletedEvent(tenantAware () -> eventBus.post(new DistributionDeletedEvent(tenantAware.getCurrentTenant(), distributionSetIDs)));
.getCurrentTenant(), distributionSetIDs)));
} }
@Override @Override
@Modifying @Modifying
@@ -530,6 +527,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
@Transactional(isolation = Isolation.READ_UNCOMMITTED) @Transactional(isolation = Isolation.READ_UNCOMMITTED)
@Modifying @Modifying
public void deleteDistributionSetMetadata(final DistributionSet distributionSet, final String key) { public void deleteDistributionSetMetadata(final DistributionSet distributionSet, final String key) {
entityManager.merge((JpaDistributionSet) distributionSet).setLastModifiedAt(0L);
distributionSetMetadataRepository.delete(new DsMetadataCompositeKey(distributionSet, key)); distributionSetMetadataRepository.delete(new DsMetadataCompositeKey(distributionSet, key));
} }
@@ -544,6 +542,15 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
pageable); pageable);
} }
@Override
public List<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(final Long distributionSetId) {
return new ArrayList<DistributionSetMetadata>(distributionSetMetadataRepository
.findAll((Specification<JpaDistributionSetMetadata>) (root, query, cb) -> cb.equal(
root.get(JpaDistributionSetMetadata_.distributionSet).get(JpaDistributionSet_.id),
distributionSetId)));
}
@Override @Override
public Page<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(final Long distributionSetId, public Page<DistributionSetMetadata> findDistributionSetMetadataByDistributionSetId(final Long distributionSetId,
final String rsqlParam, final Pageable pageable) { final String rsqlParam, final Pageable pageable) {

View File

@@ -621,6 +621,15 @@ public class JpaSoftwareManagement implements SoftwareManagement {
pageable); pageable);
} }
@Override
public List<SoftwareModuleMetadata> findSoftwareModuleMetadataBySoftwareModuleId(final Long softwareModuleId) {
return new ArrayList<> ( softwareModuleMetadataRepository
.findAll(
(Specification<JpaSoftwareModuleMetadata>) (root, query, cb) -> cb.and(
cb.equal(root.get(JpaSoftwareModuleMetadata_.softwareModule)
.get(JpaSoftwareModule_.id), softwareModuleId))));
}
@Override @Override
public SoftwareModuleMetadata findSoftwareModuleMetadata(final SoftwareModule softwareModule, final String key) { public SoftwareModuleMetadata findSoftwareModuleMetadata(final SoftwareModule softwareModule, final String key) {
return findSoftwareModuleMetadata(new SwMetadataCompositeKey(softwareModule, key)); return findSoftwareModuleMetadata(new SwMetadataCompositeKey(softwareModule, key));

View File

@@ -222,7 +222,6 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
populateLog(); populateLog();
populateDescription(); populateDescription();
populateDetailsWidget(); populateDetailsWidget();
populateMetadataDetails();
} }
protected void populateLog() { protected void populateLog() {

View File

@@ -40,18 +40,17 @@ import com.vaadin.ui.themes.ValoTheme;
@SpringComponent @SpringComponent
@VaadinSessionScope @VaadinSessionScope
public class DistributionSetMetadatadetailslayout extends Table{ public class DistributionSetMetadatadetailslayout extends Table {
private static final long serialVersionUID = 2913758299611837718L; private static final long serialVersionUID = 2913758299611837718L;
private DistributionSetManagement distributionSetManagement;
private DistributionSetManagement distributionSetManagement;
private DsMetadataPopupLayout dsMetadataPopupLayout; private DsMetadataPopupLayout dsMetadataPopupLayout;
private static final String METADATA_KEY = "Key"; private static final String METADATA_KEY = "Key";
private static final String VIEW ="view"; private static final String VIEW = "view";
private SpPermissionChecker permissionChecker; private SpPermissionChecker permissionChecker;
@@ -59,19 +58,18 @@ public class DistributionSetMetadatadetailslayout extends Table{
private I18N i18n; private I18N i18n;
private Long selectedDistSetId; private Long selectedDistSetId;
/** /**
* *
* @param i18n * @param i18n
* @param permissionChecker * @param permissionChecker
* @param distributionSetManagement * @param distributionSetManagement
* @param dsMetadataPopupLayout * @param dsMetadataPopupLayout
*/ */
public void init(final I18N i18n, final SpPermissionChecker permissionChecker, public void init(final I18N i18n, final SpPermissionChecker permissionChecker,
final DistributionSetManagement distributionSetManagement, final DistributionSetManagement distributionSetManagement,
final DsMetadataPopupLayout dsMetadataPopupLayout, final DsMetadataPopupLayout dsMetadataPopupLayout, final EntityFactory entityFactory) {
final EntityFactory entityFactory) {
this.i18n = i18n; this.i18n = i18n;
this.permissionChecker = permissionChecker; this.permissionChecker = permissionChecker;
this.distributionSetManagement = distributionSetManagement; this.distributionSetManagement = distributionSetManagement;
@@ -81,7 +79,6 @@ public class DistributionSetMetadatadetailslayout extends Table{
addCustomGeneratedColumns(); addCustomGeneratedColumns();
} }
/** /**
* Populate software module metadata. * Populate software module metadata.
* *
@@ -90,37 +87,17 @@ public class DistributionSetMetadatadetailslayout extends Table{
public void populateDSMetadata(final DistributionSet distributionSet) { public void populateDSMetadata(final DistributionSet distributionSet) {
removeAllItems(); removeAllItems();
if (null == distributionSet) { if (null == distributionSet) {
return; return;
} }
selectedDistSetId = distributionSet.getId(); selectedDistSetId = distributionSet.getId();
final List<DistributionSetMetadata> dsMetadataList = distributionSet.getMetadata(); final List<DistributionSetMetadata> dsMetadataList = distributionSetManagement
.findDistributionSetMetadataByDistributionSetId(selectedDistSetId);
if (null != dsMetadataList && !dsMetadataList.isEmpty()) { if (null != dsMetadataList && !dsMetadataList.isEmpty()) {
dsMetadataList.forEach(dsMetadata -> setDSMetadataProperties(dsMetadata)); dsMetadataList.forEach(dsMetadata -> setDSMetadataProperties(dsMetadata));
} }
} }
/**
* Create metadata .
*
* @param metadataKeyName
*/
public void createMetadata(final String metadataKeyName){
final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource();
final Item item = metadataContainer.addItem(metadataKeyName);
item.getItemProperty(METADATA_KEY).setValue(metadataKeyName);
}
/**
* Delete metadata.
*
* @param metadataKeyName
*/
public void deleteMetadata(final String metadataKeyName){
final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource();
metadataContainer.removeItem(metadataKeyName);
}
private void createDSMetadataTable() { private void createDSMetadataTable() {
addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES);
addStyleName(ValoTheme.TABLE_NO_STRIPES); addStyleName(ValoTheme.TABLE_NO_STRIPES);
@@ -132,8 +109,8 @@ public class DistributionSetMetadatadetailslayout extends Table{
setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); setColumnHeaderMode(ColumnHeaderMode.EXPLICIT);
addDSMetadataTableHeader(); addDSMetadataTableHeader();
setSizeFull(); setSizeFull();
//same as height of other tabs in details tabsheet // same as height of other tabs in details tabsheet
setHeight(116,Unit.PIXELS); setHeight(116, Unit.PIXELS);
} }
private IndexedContainer getDistSetContainer() { private IndexedContainer getDistSetContainer() {
@@ -154,21 +131,19 @@ public class DistributionSetMetadatadetailslayout extends Table{
setColumnHeader(METADATA_KEY, i18n.get("header.key")); setColumnHeader(METADATA_KEY, i18n.get("header.key"));
} }
private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata) {
private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata){
final Item item = getContainerDataSource().addItem(dsMetadata.getKey()); final Item item = getContainerDataSource().addItem(dsMetadata.getKey());
item.getItemProperty(METADATA_KEY).setValue(dsMetadata.getKey()); item.getItemProperty(METADATA_KEY).setValue(dsMetadata.getKey());
} }
private void addCustomGeneratedColumns() { private void addCustomGeneratedColumns() {
addGeneratedColumn(METADATA_KEY, addGeneratedColumn(METADATA_KEY, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId));
(source, itemId, columnId) -> customMetadataDetailButton((String) itemId));
} }
private Button customMetadataDetailButton(final String metadataKey) { private Button customMetadataDetailButton(final String metadataKey) {
final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), metadataKey, "View " final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), metadataKey,
+ metadataKey + " Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); "View " + metadataKey + " Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class);
viewIcon.setData(metadataKey); viewIcon.setData(metadataKey);
viewIcon.addStyleName(ValoTheme.BUTTON_TINY + " " + ValoTheme.BUTTON_LINK + " " + "on-focus-no-border link" viewIcon.addStyleName(ValoTheme.BUTTON_TINY + " " + ValoTheme.BUTTON_LINK + " " + "on-focus-no-border link"
+ " " + "text-style"); + " " + "text-style");
@@ -177,16 +152,15 @@ public class DistributionSetMetadatadetailslayout extends Table{
} }
private static String getDetailLinkId(final String name) { private static String getDetailLinkId(final String name) {
return new StringBuilder(SPUIComponentIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name) return new StringBuilder(SPUIComponentIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name).toString();
.toString();
} }
private void showMetadataDetails(final Long selectedDistSetId , final String metadataKey) { private void showMetadataDetails(final Long selectedDistSetId, final String metadataKey) {
DistributionSet distSet = distributionSetManagement.findDistributionSetById(selectedDistSetId); final DistributionSet distSet = distributionSetManagement.findDistributionSetById(selectedDistSetId);
/* display the window */ /* display the window */
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(distSet, UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(distSet,
entityFactory.generateDistributionSetMetadata(distSet, metadataKey, "") )); entityFactory.generateDistributionSetMetadata(distSet, metadataKey, "")));
} }
} }

View File

@@ -80,7 +80,7 @@ public class SoftwareModuleMetadatadetailslayout extends Table {
return; return;
} }
selectedSWModuleId = swModule.getId(); selectedSWModuleId = swModule.getId();
final List<SoftwareModuleMetadata> swMetadataList = swModule.getMetadata(); final List<SoftwareModuleMetadata> swMetadataList = softwareManagement.findSoftwareModuleMetadataBySoftwareModuleId(selectedSWModuleId);
if (null != swMetadataList && !swMetadataList.isEmpty()) { if (null != swMetadataList && !swMetadataList.isEmpty()) {
swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata));
} }
@@ -160,7 +160,7 @@ public class SoftwareModuleMetadatadetailslayout extends Table {
} }
private void showMetadataDetails(final Long selectedSWModuleId, final String metadataKey) { private void showMetadataDetails(final Long selectedSWModuleId, final String metadataKey) {
SoftwareModule swmodule = softwareManagement.findSoftwareModuleById(selectedSWModuleId); final SoftwareModule swmodule = softwareManagement.findSoftwareModuleById(selectedSWModuleId);
/* display the window */ /* display the window */
UI.getCurrent().addWindow( UI.getCurrent().addWindow(
swMetadataPopupLayout.getWindow(swmodule, swMetadataPopupLayout.getWindow(swmodule,

View File

@@ -17,7 +17,6 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName; import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
@@ -29,7 +28,6 @@ import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent; import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleAssignmentDiscardEvent; import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleAssignmentDiscardEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
@@ -98,23 +96,6 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
private final Map<String, StringBuilder> assignedSWModule = new HashMap<>(); private final Map<String, StringBuilder> assignedSWModule = new HashMap<>();
@EventBusListenerMethod(scope = EventScope.SESSION)
void onEvent(final MetadataEvent event) {
UI.getCurrent()
.access(() -> {
DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata();
if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) {
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) {
dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey());
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) {
dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey());
}
}
});
}
/** /**
* softwareLayout Initialize the component. * softwareLayout Initialize the component.
*/ */
@@ -124,8 +105,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(), softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(),
manageDistUIState); manageDistUIState);
dsMetadataTable = new DistributionSetMetadatadetailslayout(); dsMetadataTable = new DistributionSetMetadatadetailslayout();
dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement, dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout,
dsMetadataPopupLayout,entityFactory); entityFactory);
super.init(); super.init();
} }
@@ -273,9 +254,9 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
} }
@Override @Override
protected void populateMetadataDetails(){ protected void populateMetadataDetails() {
dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); dsMetadataTable.populateDSMetadata(getSelectedBaseEntity());
} }
private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) { private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) {
final VerticalLayout detailsTabLayout = getDetailsLayout(); final VerticalLayout detailsTabLayout = getDetailsLayout();
@@ -406,23 +387,23 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
@Override @Override
protected String getShowMetadataButtonId() { protected String getShowMetadataButtonId() {
DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState final DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent()
.getLastSelectedDistribution().get() : null; ? manageDistUIState.getLastSelectedDistribution().get() : null;
return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "." return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "."
+ lastselectedDistDS.getVersion(); + lastselectedDistDS.getVersion();
} }
private boolean isDistributionSetSelected(DistributionSet ds) { private boolean isDistributionSetSelected(final DistributionSet ds) {
DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState final DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent()
.getLastSelectedDistribution().get() : null; ? manageDistUIState.getLastSelectedDistribution().get() : null;
return ds != null && lastselectedDistDS != null && lastselectedDistDS.getName().equals(ds.getName()) return ds != null && lastselectedDistDS != null && lastselectedDistDS.getName().equals(ds.getName())
&& lastselectedDistDS.getVersion().endsWith(ds.getVersion()); && lastselectedDistDS.getVersion().endsWith(ds.getVersion());
} }
@Override @Override
protected void showMetadata(ClickEvent event) { protected void showMetadata(final ClickEvent event) {
DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); final DistributionSet ds = distributionSetManagement
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds,null)); .findDistributionSetByIdWithDetails(getSelectedBaseEntityId());
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null));
} }
} }

View File

@@ -16,8 +16,6 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.ui.common.AbstractMetadataPopupLayout; import org.eclipse.hawkbit.ui.common.AbstractMetadataPopupLayout;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent.MetadataUIEvent;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.SpringComponent;
@@ -42,7 +40,7 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
protected SpPermissionChecker permChecker; protected SpPermissionChecker permChecker;
@Override @Override
protected void checkForDuplicate(DistributionSet entity, String value) { protected void checkForDuplicate(final DistributionSet entity, final String value) {
distributionSetManagement.findOne(entity, value); distributionSetManagement.findOne(entity, value);
} }
@@ -50,11 +48,11 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
* Create metadata for DistributionSet. * Create metadata for DistributionSet.
*/ */
@Override @Override
protected DistributionSetMetadata createMetadata(DistributionSet entity, String key, String value) { protected DistributionSetMetadata createMetadata(final DistributionSet entity, final String key,
DistributionSetMetadata dsMetaData = distributionSetManagement.createDistributionSetMetadata(entityFactory final String value) {
.generateDistributionSetMetadata(entity, key, value)); final DistributionSetMetadata dsMetaData = distributionSetManagement
.createDistributionSetMetadata(entityFactory.generateDistributionSetMetadata(entity, key, value));
setSelectedEntity(dsMetaData.getDistributionSet()); setSelectedEntity(dsMetaData.getDistributionSet());
eventBus.publish(this, new MetadataEvent(MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA, dsMetaData));
return dsMetaData; return dsMetaData;
} }
@@ -62,9 +60,10 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
* Update metadata for DistributionSet. * Update metadata for DistributionSet.
*/ */
@Override @Override
protected DistributionSetMetadata updateMetadata(DistributionSet entity, String key, String value) { protected DistributionSetMetadata updateMetadata(final DistributionSet entity, final String key,
DistributionSetMetadata dsMetaData = distributionSetManagement.updateDistributionSetMetadata(entityFactory final String value) {
.generateDistributionSetMetadata(entity, key, value)); final DistributionSetMetadata dsMetaData = distributionSetManagement
.updateDistributionSetMetadata(entityFactory.generateDistributionSetMetadata(entity, key, value));
setSelectedEntity(dsMetaData.getDistributionSet()); setSelectedEntity(dsMetaData.getDistributionSet());
return dsMetaData; return dsMetaData;
} }
@@ -79,10 +78,9 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
*/ */
@Override @Override
protected void deleteMetadata(DistributionSet entity, String key, String value) { protected void deleteMetadata(final DistributionSet entity, final String key, final String value) {
DistributionSetMetadata dsMetaData = entityFactory.generateDistributionSetMetadata(entity, key, value); final DistributionSetMetadata dsMetaData = entityFactory.generateDistributionSetMetadata(entity, key, value);
distributionSetManagement.deleteDistributionSetMetadata(entity, key); distributionSetManagement.deleteDistributionSetMetadata(entity, key);
eventBus.publish(this, new MetadataEvent(MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA, dsMetaData));
} }
@Override @Override

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.distributions.event;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata;
/** /**
* *
* Metadata Events. * Metadata Events.
@@ -18,21 +19,21 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata;
public class MetadataEvent { public class MetadataEvent {
public enum MetadataUIEvent { public enum MetadataUIEvent {
CREATE_DISTRIBUTION_SET_METADATA, DELETE_DISTRIBUTION_SET_METADATA, DELETE_SOFTWARE_MODULE_METADATA, CREATE_SOFTWARE_MODULE_METADATA; DELETE_SOFTWARE_MODULE_METADATA, CREATE_SOFTWARE_MODULE_METADATA;
} }
private MetadataUIEvent metadataUIEvent; private final MetadataUIEvent metadataUIEvent;
private DistributionSetMetadata distributionSetMetadata; private DistributionSetMetadata distributionSetMetadata;
private SoftwareModuleMetadata softwareModuleMetadata; private SoftwareModuleMetadata softwareModuleMetadata;
public MetadataEvent(MetadataUIEvent metadataUIEvent, final DistributionSetMetadata distributionSetMetadata) { public MetadataEvent(final MetadataUIEvent metadataUIEvent, final DistributionSetMetadata distributionSetMetadata) {
this.metadataUIEvent = metadataUIEvent; this.metadataUIEvent = metadataUIEvent;
this.distributionSetMetadata = distributionSetMetadata; this.distributionSetMetadata = distributionSetMetadata;
} }
public MetadataEvent(MetadataUIEvent metadataUIEvent, final SoftwareModuleMetadata softwareModuleMetadata) { public MetadataEvent(final MetadataUIEvent metadataUIEvent, final SoftwareModuleMetadata softwareModuleMetadata) {
this.metadataUIEvent = metadataUIEvent; this.metadataUIEvent = metadataUIEvent;
this.softwareModuleMetadata = softwareModuleMetadata; this.softwareModuleMetadata = softwareModuleMetadata;
} }

View File

@@ -37,6 +37,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
import org.eclipse.hawkbit.ui.utils.UINotification; import org.eclipse.hawkbit.ui.utils.UINotification;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -84,10 +85,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
@Autowired @Autowired
private transient EntityFactory entityFactory; private transient EntityFactory entityFactory;
@Autowired
private transient DistributionSetTable distributionSetTable;
private TextField distNameTextField; private TextField distNameTextField;
private TextField distVersionTextField; private TextField distVersionTextField;
private TextArea descTextArea; private TextArea descTextArea;
@@ -241,7 +238,8 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
new Object[] { newDist.getName(), newDist.getVersion() })); new Object[] { newDist.getName(), newDist.getVersion() }));
final Set<DistributionSetIdName> s = new HashSet<>(); final Set<DistributionSetIdName> s = new HashSet<>();
s.add(new DistributionSetIdName(newDist.getId(),newDist.getName(),newDist.getVersion())); s.add(new DistributionSetIdName(newDist.getId(), newDist.getName(), newDist.getVersion()));
final DistributionSetTable distributionSetTable = SpringContextHelper.getBean(DistributionSetTable.class);
distributionSetTable.setValue(s); distributionSetTable.setValue(s);
} }
} }

View File

@@ -11,7 +11,6 @@ package org.eclipse.hawkbit.ui.management.dstable;
import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.ui.common.DistributionSetIdName; import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout;
@@ -19,7 +18,6 @@ import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.distributions.dstable.DsMetadataPopupLayout; import org.eclipse.hawkbit.ui.distributions.dstable.DsMetadataPopupLayout;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
@@ -55,7 +53,7 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
private DistributionTagToken distributionTagToken; private DistributionTagToken distributionTagToken;
@Autowired @Autowired
private transient DistributionSetManagement distributionSetManagement; private transient DistributionSetManagement distributionSetManagement;
@Autowired @Autowired
private DsMetadataPopupLayout dsMetadataPopupLayout; private DsMetadataPopupLayout dsMetadataPopupLayout;
@@ -73,28 +71,12 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null); softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null);
dsMetadataTable = new DistributionSetMetadatadetailslayout(); dsMetadataTable = new DistributionSetMetadatadetailslayout();
dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement, dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout,
dsMetadataPopupLayout,entityFactory); entityFactory);
super.init(); super.init();
} }
@EventBusListenerMethod(scope = EventScope.SESSION)
void onEvent(final MetadataEvent event) {
UI.getCurrent()
.access(() -> {
DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata();
if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) {
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) {
dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey());
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) {
dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey());
}
}
});
}
@EventBusListenerMethod(scope = EventScope.SESSION) @EventBusListenerMethod(scope = EventScope.SESSION)
void onEvent(final DistributionTableEvent distributionTableEvent) { void onEvent(final DistributionTableEvent distributionTableEvent) {
onBaseEntityEvent(distributionTableEvent); onBaseEntityEvent(distributionTableEvent);
@@ -157,11 +139,10 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
} }
@Override @Override
protected void populateMetadataDetails(){ protected void populateMetadataDetails() {
dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); dsMetadataTable.populateDSMetadata(getSelectedBaseEntity());
} }
private void populateDetails(final DistributionSet ds) { private void populateDetails(final DistributionSet ds) {
if (ds != null) { if (ds != null) {
@@ -214,22 +195,24 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
@Override @Override
protected String getShowMetadataButtonId() { protected String getShowMetadataButtonId() {
DistributionSetIdName lastselectedDistDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState final DistributionSetIdName lastselectedDistDS = managementUIState.getLastSelectedDistribution().isPresent()
.getLastSelectedDistribution().get() : null; ? managementUIState.getLastSelectedDistribution().get() : null;
return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "." return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "."
+ lastselectedDistDS.getVersion(); + lastselectedDistDS.getVersion();
} }
private boolean isDistributionSetSelected(DistributionSet ds) {
DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState private boolean isDistributionSetSelected(final DistributionSet ds) {
.getLastSelectedDistribution().get() : null; final DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent()
return ds!=null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName()) ? managementUIState.getLastSelectedDistribution().get() : null;
return ds != null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName())
&& lastselectedManageDS.getVersion().endsWith(ds.getVersion()); && lastselectedManageDS.getVersion().endsWith(ds.getVersion());
} }
@Override @Override
protected void showMetadata(ClickEvent event) { protected void showMetadata(final ClickEvent event) {
DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); final DistributionSet ds = distributionSetManagement
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds,null)); .findDistributionSetByIdWithDetails(getSelectedBaseEntityId());
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null));
} }
} }