use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.
the class EntityRestore method showRestoreDialog.
protected void showRestoreDialog() {
final Set<Entity> entityList = entitiesTable.getSelected();
Entity entity = entitiesDs.getItem();
if (entityList != null && entity != null && entityList.size() > 0) {
if (entity instanceof SoftDelete) {
showOptionDialog(getMessage("dialogs.Confirmation"), getMessage("dialogs.Message"), MessageType.CONFIRMATION, new Action[] { new DialogAction(Type.OK).withHandler(event -> {
restoreService.restoreEntities(entityList);
entitiesTable.refresh();
entitiesTable.requestFocus();
}), new DialogAction(Type.CANCEL, Status.PRIMARY).withHandler(event -> {
entitiesTable.requestFocus();
}) });
}
} else {
showNotification(getMessage("entityRestore.restoreMsg"));
}
}
use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.
the class GroupBrowser method init.
@Override
public void init(final Map<String, Object> params) {
CreateAction createAction = new CreateAction(groupsTree);
createAction.setAfterCommitHandler(entity -> {
groupsTree.expandTree();
});
groupsTree.addAction(createAction);
createAction.setCaption(getMessage("action.create"));
createAction.setOpenType(OpenType.DIALOG);
EditAction groupEditAction = new EditAction(groupsTree);
groupEditAction.setAfterCommitHandler(entity -> {
groupsTree.expandTree();
});
groupEditAction.setOpenType(OpenType.DIALOG);
groupsTree.addAction(groupEditAction);
groupCreateButton.addAction(createAction);
groupCreateButton.addAction(groupCopyAction);
userCreateAction = new GroupPropertyCreateAction(usersTable);
userCreateAction.setAfterCommitHandler(entity -> {
usersTable.getDatasource().refresh();
});
groupsTree.addAction(new RemoveAction(groupsTree) {
@Override
protected boolean isApplicable() {
if (target != null && target.getDatasource() != null && target.getSingleSelected() != null) {
@SuppressWarnings("unchecked") HierarchicalDatasource<Group, UUID> ds = (HierarchicalDatasource<Group, UUID>) target.getDatasource();
UUID selectedItemId = (UUID) target.getSingleSelected().getId();
return ds.getChildren(selectedItemId).isEmpty();
}
return false;
}
});
usersTable.addAction(userCreateAction);
RemoveAction removeAction = new UserRemoveAction(usersTable, userManagementService);
usersTable.addAction(removeAction);
Action moveToGroupAction = new ItemTrackingAction("moveToGroup").withIcon("icons/move.png").withCaption(getMessage("moveToGroup")).withHandler(event -> {
Set<User> selected = usersTable.getSelected();
if (!selected.isEmpty()) {
Map<String, Object> lookupParams = ParamsMap.of("exclude", groupsTree.getSelected().iterator().next(), "excludeChildren", false);
Lookup lookupWindow = openLookup(Group.class, items -> {
if (items.size() == 1) {
Group group = (Group) items.iterator().next();
List<UUID> usersForModify = new ArrayList<>();
for (User user : selected) {
usersForModify.add(user.getId());
}
userManagementService.moveUsersToGroup(usersForModify, group.getId());
if (selected.size() == 1) {
User user = selected.iterator().next();
showNotification(formatMessage("userMovedToGroup", user.getLogin(), group.getName()));
} else {
showNotification(formatMessage("usersMovedToGroup", group.getName()));
}
usersTable.getDatasource().refresh();
}
}, OpenType.DIALOG, lookupParams);
lookupWindow.addCloseListener(actionId -> {
usersTable.requestFocus();
});
}
});
MetaClass userMetaClass = metadata.getSession().getClass(User.class);
moveToGroupAction.setEnabled(security.isEntityOpPermitted(userMetaClass, EntityOp.UPDATE));
usersTable.addAction(moveToGroupAction);
tabsheet.addListener(newTab -> {
if ("constraintsTab".equals(newTab.getName())) {
initConstraintsTab();
} else if ("attributesTab".equals(newTab.getName())) {
initAttributesTab();
}
});
final boolean hasPermissionsToCreateGroup = security.isEntityOpPermitted(metadata.getSession().getClass(Group.class), EntityOp.CREATE);
// enable actions if group is selected
groupsDs.addItemChangeListener(e -> {
if (userCreateAction != null) {
userCreateAction.setEnabled(e.getItem() != null);
}
if (attributeCreateAction != null) {
attributeCreateAction.setEnabled(e.getItem() != null);
}
if (constraintCreateAction != null) {
constraintCreateAction.setEnabled(e.getItem() != null);
}
groupCopyAction.setEnabled(hasPermissionsToCreateGroup && e.getItem() != null);
CollectionDatasource ds = usersTable.getDatasource();
if (ds instanceof CollectionDatasource.SupportsPaging) {
((CollectionDatasource.SupportsPaging) ds).setFirstResult(0);
}
});
groupsDs.refresh();
groupsTree.expandTree();
final Collection<UUID> itemIds = groupsDs.getRootItemIds();
if (!itemIds.isEmpty()) {
groupsTree.setSelected(groupsDs.getItem(itemIds.iterator().next()));
}
groupCreateButton.setEnabled(hasPermissionsToCreateGroup);
groupCopyAction.setEnabled(hasPermissionsToCreateGroup);
importUpload.addFileUploadSucceedListener(event -> {
File file = fileUploadingAPI.getFile(importUpload.getFileId());
if (file == null) {
String errorMsg = String.format("Entities import upload error. File with id %s not found", importUpload.getFileId());
throw new RuntimeException(errorMsg);
}
byte[] fileBytes;
try (InputStream is = new FileInputStream(file)) {
fileBytes = IOUtils.toByteArray(is);
} catch (IOException e) {
throw new RuntimeException("Unable to import file", e);
}
try {
fileUploadingAPI.deleteFile(importUpload.getFileId());
} catch (FileStorageException e) {
log.error("Unable to delete temp file", e);
}
try {
Collection<Entity> importedEntities;
if ("json".equals(Files.getFileExtension(importUpload.getFileName()))) {
importedEntities = entityImportExportService.importEntitiesFromJSON(new String(fileBytes), createGroupsImportView());
} else {
importedEntities = entityImportExportService.importEntitiesFromZIP(fileBytes, createGroupsImportView());
}
long importedGroupsCount = importedEntities.stream().filter(entity -> entity instanceof Group).count();
showNotification(importedGroupsCount + " groups imported", NotificationType.HUMANIZED);
groupsDs.refresh();
} catch (Exception e) {
showNotification(formatMessage("importError", e.getMessage()), NotificationType.ERROR);
}
});
Companion companion = getCompanion();
if (companion != null) {
companion.initDragAndDrop(usersTable, groupsTree, (event) -> {
if (event.getUsers().size() == 1) {
if (moveSelectedUsersToGroup(event)) {
showNotification(formatMessage("userMovedToGroup", event.getUsers().get(0).getLogin(), event.getGroup().getName()));
}
} else {
showOptionDialog(messages.getMainMessage("dialogs.Confirmation"), formatMessage("dialogs.moveToGroup.message", event.getGroup().getName(), event.getUsers().size()), MessageType.CONFIRMATION, new Action[] { new DialogAction(Type.OK).withHandler(dialogEvent -> {
if (moveSelectedUsersToGroup(event)) {
showNotification(formatMessage("usersMovedToGroup", event.getGroup().getName()));
}
}), new DialogAction(Type.CANCEL, Action.Status.PRIMARY) });
}
});
}
}
use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.
the class RoleBrowser method importRoles.
protected void importRoles() {
File file = fileUploadingAPI.getFile(importRolesUpload.getFileId());
if (file == null) {
String errorMsg = String.format("Entities import upload error. File with id %s not found", importRolesUpload.getFileId());
throw new RuntimeException(errorMsg);
}
byte[] fileBytes;
try (InputStream is = new FileInputStream(file)) {
fileBytes = IOUtils.toByteArray(is);
} catch (IOException e) {
throw new RuntimeException("Unable to import file", e);
}
try {
Collection<Entity> importedEntities;
if ("json".equals(Files.getFileExtension(importRolesUpload.getFileName()))) {
String jsonContent = new String(fileBytes, StandardCharsets.UTF_8);
importedEntities = entityImportExportService.importEntitiesFromJSON(jsonContent, createRolesImportView());
} else {
importedEntities = entityImportExportService.importEntitiesFromZIP(fileBytes, createRolesImportView());
}
long importedRolesCount = importedEntities.stream().filter(entity -> entity instanceof Role).count();
showNotification(importedRolesCount + " roles imported", NotificationType.HUMANIZED);
rolesDs.refresh();
} catch (Exception e) {
showNotification(formatMessage("importError", e.getMessage()), NotificationType.ERROR);
}
try {
fileUploadingAPI.deleteFile(importRolesUpload.getFileId());
} catch (FileStorageException e) {
log.error("Unable to delete temp file", e);
}
}
use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.
the class ScreenHistorySupport method saveScreenHistory.
public void saveScreenHistory(Window window, WindowManager.OpenMode openMode) {
Security security = AppBeans.get(Security.NAME);
if (security.isEntityOpPermitted(ScreenHistoryEntity.class, EntityOp.CREATE) && window.getFrame() != null && (window.getFrame() instanceof Window.Editor) && openMode != WindowManager.OpenMode.DIALOG && (screenIds == null || screenIds.contains(window.getId()))) {
String caption = window.getCaption();
UUID entityId = null;
Frame frame = window.getFrame();
Entity entity = null;
if (frame instanceof Window.Editor) {
entity = ((Window.Editor) frame).getItem();
if (entity != null) {
if (PersistenceHelper.isNew(entity)) {
return;
}
if (StringUtils.isBlank(caption))
caption = messages.getTools().getEntityCaption(entity.getMetaClass()) + " " + entity.getInstanceName();
entityId = (UUID) entity.getId();
}
}
ScreenHistoryEntity screenHistoryEntity = metadata.create(ScreenHistoryEntity.class);
screenHistoryEntity.setCaption(StringUtils.abbreviate(caption, 255));
screenHistoryEntity.setUrl(makeLink(window));
screenHistoryEntity.setEntityId(entityId);
addAdditionalFields(screenHistoryEntity, entity);
CommitContext cc = new CommitContext(Collections.singleton(screenHistoryEntity));
DataService dataService = AppBeans.get(DataService.NAME);
dataService.commit(cc);
}
}
use of com.haulmont.cuba.core.entity.Entity in project cuba by cuba-platform.
the class LinkColumnHelper method initColumn.
public static void initColumn(Table table, final String propertyName, final Handler handler) {
final ComponentsFactory componentsFactory = AppBeans.get(ComponentsFactory.NAME);
table.addGeneratedColumn(propertyName, new Table.ColumnGenerator() {
@Override
public Component generateCell(final Entity entity) {
// //process properties like building.house.room
String[] props = propertyName.split("\\.");
Instance nestedEntity = entity;
for (int i = 0; i < props.length - 1; i++) {
nestedEntity = nestedEntity.getValue(props[i]);
if (nestedEntity == null) {
break;
}
}
final Object value = (nestedEntity == null) ? null : nestedEntity.getValue(props[props.length - 1]);
if (value != null) {
Button button = componentsFactory.createComponent(Button.class);
button.setStyleName("link");
button.setAction(new AbstractAction("open") {
@Override
public void actionPerform(Component component) {
handler.onClick(entity);
}
@Override
public String getCaption() {
String str;
Datatype datatype = Datatypes.get(value.getClass());
if (datatype != null) {
UserSessionSource sessionSource = AppBeans.get(UserSessionSource.NAME);
str = datatype.format(value, sessionSource.getLocale());
} else {
str = value.toString();
}
return str;
}
});
button.setStyleName("link");
return button;
}
return null;
}
});
}
Aggregations