mirror of
https://gitee.com/jmix/cuba.git
synced 2024-12-04 12:17:41 +08:00
PL-5393 Category attribute code should be unique for the certain entity type
#PL-5393
This commit is contained in:
parent
e287725c0a
commit
0ef9872c0e
@ -669,8 +669,9 @@ create table SYS_CATEGORY_ATTR(
|
||||
DELETE_TS timestamp,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CATEGORY_ENTITY_TYPE varchar(4000),
|
||||
NAME varchar(255),
|
||||
CODE varchar(50),
|
||||
CODE varchar(50) not null,
|
||||
CATEGORY_ID varchar(36),
|
||||
IS_ENTITY boolean,
|
||||
DATA_TYPE varchar(200),
|
||||
@ -691,6 +692,8 @@ create table SYS_CATEGORY_ATTR(
|
||||
primary key (ID)
|
||||
)^
|
||||
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
||||
|
||||
alter table SYS_CATEGORY_ATTR add constraint SYS_CATEGORY_ATTR_CATEGORY_ID foreign key (CATEGORY_ID) references SYS_CATEGORY(ID)^
|
||||
|
||||
create table SYS_ATTR_VALUE (
|
||||
|
@ -725,8 +725,9 @@ create table SYS_CATEGORY_ATTR (
|
||||
DELETE_TS datetime,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CATEGORY_ENTITY_TYPE varchar(4000),
|
||||
NAME varchar(255),
|
||||
CODE varchar(50),
|
||||
CODE varchar(50) not null,
|
||||
CATEGORY_ID uniqueidentifier,
|
||||
IS_ENTITY tinyint,
|
||||
DATA_TYPE varchar(200),
|
||||
@ -749,7 +750,7 @@ create table SYS_CATEGORY_ATTR (
|
||||
)^
|
||||
|
||||
create clustered index IDX_SYS_CATEGORY_ATTR_CATEGORY on SYS_CATEGORY_ATTR (CATEGORY_ID)^
|
||||
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
create table SYS_ATTR_VALUE (
|
||||
|
@ -56,8 +56,9 @@ create table SYS_CATEGORY_ATTR (
|
||||
UPDATED_BY varchar2(50),
|
||||
DELETE_TS timestamp,
|
||||
DELETED_BY varchar2(50),
|
||||
CATEGORY_ENTITY_TYPE varchar(4000),
|
||||
NAME varchar2(255),
|
||||
CODE varchar2(50),
|
||||
CODE varchar2(50) not null,
|
||||
CATEGORY_ID varchar2(32),
|
||||
IS_ENTITY char(1),
|
||||
DATA_TYPE varchar2(200),
|
||||
@ -77,6 +78,7 @@ create table SYS_CATEGORY_ATTR (
|
||||
primary key(ID)
|
||||
)^
|
||||
create index IDX_SYS_CATEGORY_ATTR_CATEGORY on SYS_CATEGORY_ATTR(CATEGORY_ID)^
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
||||
|
||||
create table SYS_CONFIG (
|
||||
ID varchar2(32) not null,
|
||||
|
@ -693,8 +693,9 @@ create table SYS_CATEGORY_ATTR (
|
||||
DELETE_TS timestamp,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CATEGORY_ENTITY_TYPE varchar(4000),
|
||||
NAME varchar(255),
|
||||
CODE varchar(50),
|
||||
CODE varchar(50) not null,
|
||||
CATEGORY_ID uuid,
|
||||
IS_ENTITY boolean,
|
||||
DATA_TYPE varchar(200),
|
||||
@ -717,6 +718,7 @@ create table SYS_CATEGORY_ATTR (
|
||||
)^
|
||||
|
||||
create index IDX_SYS_CATEGORY_ATTR_CATEGORY on SYS_CATEGORY_ATTR (CATEGORY_ID)^
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE) where DELETE_TS is null;
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
create table SYS_ATTR_VALUE (
|
||||
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
alter table SYS_CATEGORY_ATTR add column CATEGORY_ENTITY_TYPE varchar(4000);
|
||||
update SYS_CATEGORY_ATTR set CODE = NAME where CODE is null;
|
||||
update SYS_CATEGORY_ATTR attr set CATEGORY_ENTITY_TYPE = (select cat.ENTITY_TYPE from SYS_CATEGORY cat where cat.ID = attr.CATEGORY_ID);
|
||||
alter table SYS_CATEGORY_ATTR alter column CODE set not null;
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
alter table SYS_CATEGORY_ATTR add column CATEGORY_ENTITY_TYPE varchar(4000);
|
||||
update SYS_CATEGORY_ATTR set CODE = NAME where CODE is null;
|
||||
update SYS_CATEGORY_ATTR attr set CATEGORY_ENTITY_TYPE = (select cat.ENTITY_TYPE from SYS_CATEGORY cat where cat.ID = attr.CATEGORY_ID);
|
||||
alter table SYS_CATEGORY_ATTR alter column CODE set not null;
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
alter table SYS_CATEGORY_ATTR add column CATEGORY_ENTITY_TYPE varchar(4000);
|
||||
update SYS_CATEGORY_ATTR set CODE = NAME where CODE is null;
|
||||
update SYS_CATEGORY_ATTR attr set CATEGORY_ENTITY_TYPE = (select cat.ENTITY_TYPE from SYS_CATEGORY cat where cat.ID = attr.CATEGORY_ID);
|
||||
alter table SYS_CATEGORY_ATTR alter column CODE set not null;
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE, DELETE_TS);
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
alter table SYS_CATEGORY_ATTR add column CATEGORY_ENTITY_TYPE varchar(4000);
|
||||
update SYS_CATEGORY_ATTR set CODE = NAME where CODE is null;
|
||||
update SYS_CATEGORY_ATTR attr set CATEGORY_ENTITY_TYPE = (select cat.ENTITY_TYPE from SYS_CATEGORY cat where cat.ID = attr.CATEGORY_ID);
|
||||
alter table SYS_CATEGORY_ATTR alter column CODE set not null;
|
||||
create unique index IDX_CAT_ATTR_ENT_TYPE_AND_CODE on SYS_CATEGORY_ATTR (CATEGORY_ENTITY_TYPE, CODE) where DELETE_TS is null;
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2008-2015 Haulmont. All rights reserved.
|
||||
* Use is subject to license terms, see http://www.cuba-platform.com/license for details.
|
||||
*/
|
||||
|
||||
package com.haulmont.cuba.core.app.dynamicattributes;
|
||||
|
||||
import com.haulmont.cuba.core.entity.CategoryAttribute;
|
||||
import com.haulmont.cuba.core.listener.BeforeInsertEntityListener;
|
||||
import com.haulmont.cuba.core.listener.BeforeUpdateEntityListener;
|
||||
|
||||
import javax.annotation.ManagedBean;
|
||||
|
||||
/**
|
||||
* @author degtyarjov
|
||||
* @version $Id$
|
||||
*/
|
||||
@ManagedBean("report_CategoryAttributeListener")
|
||||
public class CategoryAttributeListener
|
||||
implements BeforeInsertEntityListener<CategoryAttribute>, BeforeUpdateEntityListener<CategoryAttribute> {
|
||||
@Override
|
||||
public void onBeforeInsert(CategoryAttribute entity) {
|
||||
setCategoryEntityType(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBeforeUpdate(CategoryAttribute entity) {
|
||||
setCategoryEntityType(entity);
|
||||
}
|
||||
|
||||
protected void setCategoryEntityType(CategoryAttribute entity) {
|
||||
if (entity.getCategory() != null) {
|
||||
entity.setCategoryEntityType(entity.getCategory().getEntityType());
|
||||
}
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@
|
||||
package com.haulmont.cuba.core.entity;
|
||||
|
||||
import com.haulmont.chile.core.annotations.NamePattern;
|
||||
import com.haulmont.cuba.core.entity.annotation.Listeners;
|
||||
import com.haulmont.cuba.core.entity.annotation.SystemLevel;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.openjpa.persistence.Persistent;
|
||||
@ -18,6 +19,7 @@ import java.util.*;
|
||||
@Table(name = "SYS_CATEGORY_ATTR")
|
||||
@NamePattern("%s|name")
|
||||
@SystemLevel
|
||||
@Listeners("report_CategoryAttributeListener")
|
||||
public class CategoryAttribute extends StandardEntity {
|
||||
|
||||
private static final long serialVersionUID = -6959392628534815752L;
|
||||
@ -29,6 +31,9 @@ public class CategoryAttribute extends StandardEntity {
|
||||
@JoinColumn(name = "CATEGORY_ID")
|
||||
private Category category;
|
||||
|
||||
@Column(name = "CATEGORY_ENTITY_TYPE")
|
||||
private String categoryEntityType;
|
||||
|
||||
@Column(name = "NAME", length = NAME_FIELD_LENGTH, nullable = false)
|
||||
private String name;
|
||||
|
||||
@ -238,6 +243,14 @@ public class CategoryAttribute extends StandardEntity {
|
||||
this.targetScreens = targetScreens;
|
||||
}
|
||||
|
||||
public String getCategoryEntityType() {
|
||||
return categoryEntityType;
|
||||
}
|
||||
|
||||
public void setCategoryEntityType(String categoryEntityType) {
|
||||
this.categoryEntityType = categoryEntityType;
|
||||
}
|
||||
|
||||
public Set<String> targetScreensSet(){
|
||||
if (StringUtils.isNotBlank(targetScreens)) {
|
||||
return new HashSet<>(Arrays.asList(targetScreens.split(",")));
|
||||
|
@ -307,5 +307,6 @@ IDX_SEC_ROLE_UNIQ_NAME=A role with the same name already exists
|
||||
IDX_SEC_USER_UNIQ_LOGIN=A user with the same login already exists
|
||||
IDX_SEC_USER_ROLE_UNIQ_ROLE=The user already has this role
|
||||
IDX_SEC_PERMISSION_UNIQUE=A permission with the same role, permission type and target already exists
|
||||
IDX_CAT_ATTR_ENT_TYPE_AND_CODE=An attribute with the same code already exists for the entity type
|
||||
|
||||
LoginException.InvalidLoginOrPassword=Unknown login name or bad password: %s
|
@ -298,5 +298,6 @@ IDX_SYS_SCHEDULED_TASK_UNIQ_BEAN_METHOD=Задача с такими bean name,
|
||||
IDX_SEC_ROLE_UNIQ_NAME=Роль с таким именем уже существует
|
||||
IDX_SEC_USER_UNIQ_LOGIN=Пользователь с таким логином уже существует
|
||||
IDX_SEC_USER_ROLE_UNIQ_ROLE=У пользователя уже есть эта роль
|
||||
IDX_CAT_ATTR_ENT_TYPE_AND_CODE=Динамический атрибут с таким кодом уже задан для данного типа сущности
|
||||
|
||||
LoginException.InvalidLoginOrPassword=Неверный логин или пароль: %s
|
Loading…
Reference in New Issue
Block a user