Java @AdminPresentation在BroadLeaveCommerce中有什么用途
您好,我是broadleaf的新手,正在尝试理解它,所以在浏览broadleaf commerce的代码时,我在实体字段中找到了Java @AdminPresentation在BroadLeaveCommerce中有什么用途,java,jpa,e-commerce,broadleaf-commerce,Java,Jpa,E Commerce,Broadleaf Commerce,您好,我是broadleaf的新手,正在尝试理解它,所以在浏览broadleaf commerce的代码时,我在实体字段中找到了@AdminPresentation,以及许多与@Admin相关的内容,如@adminPresentationandnedTargetCollection,@AdminPresentationCollection等相关注释,因此请解释这些注释的作用或任何参考链接,以了解这些注释非常有用 import org.apache.commons.collections.
@AdminPresentation
,以及许多与@Admin相关的内容,如@adminPresentationandnedTargetCollection,@AdminPresentationCollection
等相关注释,因此请解释这些注释的作用或任何参考链接,以了解这些注释非常有用
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.broadleafcommerce.common.admin.domain.AdminMainEntity;
import org.broadleafcommerce.common.media.domain.Media;
import org.broadleafcommerce.common.persistence.ArchiveStatus;
import org.broadleafcommerce.common.persistence.Status;
import org.broadleafcommerce.common.presentation.AdminPresentation;
import org.broadleafcommerce.common.presentation.AdminPresentationAdornedTargetCollection;
import org.broadleafcommerce.common.presentation.AdminPresentationClass;
import org.broadleafcommerce.common.presentation.AdminPresentationCollection;
import org.broadleafcommerce.common.presentation.AdminPresentationMap;
import org.broadleafcommerce.common.presentation.AdminPresentationOperationTypes;
import org.broadleafcommerce.common.presentation.AdminPresentationToOneLookup;
import org.broadleafcommerce.common.presentation.PopulateToOneFieldsEnum;
import org.broadleafcommerce.common.presentation.RequiredOverride;
import org.broadleafcommerce.common.presentation.client.AddMethodType;
import org.broadleafcommerce.common.presentation.client.OperationType;
import org.broadleafcommerce.common.presentation.client.VisibilityEnum;
import org.broadleafcommerce.common.util.DateUtil;
import org.broadleafcommerce.common.vendor.service.type.ContainerShapeType;
import org.broadleafcommerce.common.vendor.service.type.ContainerSizeType;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@javax.persistence.Table(name="BLC_PRODUCT")
//multi-column indexes don't appear to get exported correctly when declared at the field level, so declaring here as a workaround
@org.hibernate.annotations.Table(appliesTo = "BLC_PRODUCT", indexes = {
@Index(name = "PRODUCT_URL_INDEX",
columnNames = {"URL","URL_KEY"}
)
})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@AdminPresentationClass(populateToOneFields = PopulateToOneFieldsEnum.TRUE, friendlyName = "baseProduct")
@SQLDelete(sql="UPDATE BLC_PRODUCT SET ARCHIVED = 'Y' WHERE PRODUCT_ID = ?")
public class ProductImpl implements Product, Status, AdminMainEntity {
private static final Log LOG = LogFactory.getLog(ProductImpl.class);
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/** The id. */
@Id
@GeneratedValue(generator= "ProductId")
@GenericGenerator(
name="ProductId",
strategy="org.broadleafcommerce.common.persistence.IdOverrideTableGenerator",
parameters = {
@Parameter(name="segment_value", value="ProductImpl"),
@Parameter(name="entity_name", value="org.broadleafcommerce.core.catalog.domain.ProductImpl")
}
)
@Column(name = "PRODUCT_ID")
@AdminPresentation(friendlyName = "ProductImpl_Product_ID", visibility = VisibilityEnum.HIDDEN_ALL)
protected Long id;
@Column(name = "URL")
@AdminPresentation(friendlyName = "ProductImpl_Product_Url", order = Presentation.FieldOrder.URL,
group = Presentation.Group.Name.General, groupOrder = Presentation.Group.Order.General,
prominent = true, gridOrder = 3, columnWidth = "200px",
requiredOverride = RequiredOverride.REQUIRED)
protected String url;
@Column(name = "URL_KEY")
@AdminPresentation(friendlyName = "ProductImpl_Product_UrlKey",
tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
group = Presentation.Group.Name.General, groupOrder = Presentation.Group.Order.General,
excluded = true)
protected String urlKey;
@Column(name = "DISPLAY_TEMPLATE")
@AdminPresentation(friendlyName = "ProductImpl_Product_Display_Template",
tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
group = Presentation.Group.Name.Advanced, groupOrder = Presentation.Group.Order.Advanced)
protected String displayTemplate;
@Column(name = "MODEL")
@AdminPresentation(friendlyName = "ProductImpl_Product_Model",
tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
group = Presentation.Group.Name.Advanced, groupOrder = Presentation.Group.Order.Advanced)
protected String model;
@Column(name = "MANUFACTURE")
@AdminPresentation(friendlyName = "ProductImpl_Product_Manufacturer", order = Presentation.FieldOrder.MANUFACTURER,
group = Presentation.Group.Name.General, groupOrder = Presentation.Group.Order.General,
prominent = true, gridOrder = 4)
protected String manufacturer;
@Column(name = "TAX_CODE")
protected String taxCode;
@Column(name = "IS_FEATURED_PRODUCT", nullable=false)
@AdminPresentation(friendlyName = "ProductImpl_Is_Featured_Product", requiredOverride = RequiredOverride.NOT_REQUIRED,
tab = Presentation.Tab.Name.Marketing, tabOrder = Presentation.Tab.Order.Marketing,
group = Presentation.Group.Name.Badges, groupOrder = Presentation.Group.Order.Badges)
protected Boolean isFeaturedProduct = false;
@OneToOne(optional = false, targetEntity = SkuImpl.class, cascade={CascadeType.ALL}, mappedBy = "defaultProduct")
@Cascade(value={org.hibernate.annotations.CascadeType.ALL})
protected Sku defaultSku;
@Column(name = "CAN_SELL_WITHOUT_OPTIONS")
@AdminPresentation(friendlyName = "ProductImpl_Can_Sell_Without_Options",
tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
group = Presentation.Group.Name.Advanced, groupOrder = Presentation.Group.Order.Advanced)
protected Boolean canSellWithoutOptions = false;
@Transient
protected List<Sku> skus = new ArrayList<Sku>();
@Transient
protected String promoMessage;
@OneToMany(mappedBy = "product", targetEntity = CrossSaleProductImpl.class, cascade = {CascadeType.ALL})
@Cascade(value={org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@OrderBy(value="sequence")
@AdminPresentationAdornedTargetCollection(friendlyName = "crossSaleProductsTitle", order = 1000,
tab = Presentation.Tab.Name.Marketing, tabOrder = Presentation.Tab.Order.Marketing,
targetObjectProperty = "relatedSaleProduct",
sortProperty = "sequence",
maintainedAdornedTargetFields = { "promotionMessage" },
gridVisibleFields = { "defaultSku.name", "promotionMessage" })
protected List<RelatedProduct> crossSaleProducts = new ArrayList<RelatedProduct>();
@OneToMany(mappedBy = "product", targetEntity = UpSaleProductImpl.class, cascade = {CascadeType.ALL})
@Cascade(value={org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@OrderBy(value="sequence")
@AdminPresentationAdornedTargetCollection(friendlyName = "upsaleProductsTitle", order = 2000,
tab = Presentation.Tab.Name.Marketing, tabOrder = Presentation.Tab.Order.Marketing,
targetObjectProperty = "relatedSaleProduct",
sortProperty = "sequence",
maintainedAdornedTargetFields = { "promotionMessage" },
gridVisibleFields = { "defaultSku.name", "promotionMessage" })
protected List<RelatedProduct> upSaleProducts = new ArrayList<RelatedProduct>();
@OneToMany(fetch = FetchType.LAZY, targetEntity = SkuImpl.class, mappedBy="product")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@BatchSize(size = 50)
@AdminPresentationCollection(friendlyName="ProductImpl_Additional_Skus", order = 1000,
tab = Presentation.Tab.Name.ProductOptions, tabOrder = Presentation.Tab.Order.ProductOptions)
protected List<Sku> additionalSkus = new ArrayList<Sku>();
@ManyToOne(targetEntity = CategoryImpl.class)
@JoinColumn(name = "DEFAULT_CATEGORY_ID")
@Index(name="PRODUCT_CATEGORY_INDEX", columnNames={"DEFAULT_CATEGORY_ID"})
@AdminPresentation(friendlyName = "ProductImpl_Product_Default_Category", order = Presentation.FieldOrder.DEFAULT_CATEGORY,
group = Presentation.Group.Name.General, groupOrder = Presentation.Group.Order.General,
prominent = true, gridOrder = 2,
requiredOverride = RequiredOverride.REQUIRED)
@AdminPresentationToOneLookup()
protected Category defaultCategory;
@OneToMany(targetEntity = CategoryProductXrefImpl.class, mappedBy = "categoryProductXref.product")
@Cascade(value={org.hibernate.annotations.CascadeType.MERGE, org.hibernate.annotations.CascadeType.PERSIST})
@OrderBy(value="displayOrder")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@BatchSize(size = 50)
@AdminPresentationAdornedTargetCollection(friendlyName = "allParentCategoriesTitle", order = 3000,
tab = Presentation.Tab.Name.Marketing, tabOrder = Presentation.Tab.Order.Marketing,
joinEntityClass = "org.broadleafcommerce.core.catalog.domain.CategoryProductXrefImpl",
targetObjectProperty = "categoryProductXref.category",
parentObjectProperty = "categoryProductXref.product",
sortProperty = "displayOrder",
gridVisibleFields = { "name" })
protected List<CategoryProductXref> allParentCategoryXrefs = new ArrayList<CategoryProductXref>();
@OneToMany(mappedBy = "product", targetEntity = ProductAttributeImpl.class, cascade = { CascadeType.ALL }, orphanRemoval = true)
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region="blStandardElements")
@MapKey(name="name")
@BatchSize(size = 50)
@AdminPresentationMap(friendlyName = "productAttributesTitle",
tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
deleteEntityUponRemove = true, forceFreeFormKeys = true, keyPropertyFriendlyName = "ProductAttributeImpl_Attribute_Name"
)
protected Map<String, ProductAttribute> productAttributes = new HashMap<String, ProductAttribute>();
@ManyToMany(fetch = FetchType.LAZY, targetEntity = ProductOptionImpl.class)
@JoinTable(name = "BLC_PRODUCT_OPTION_XREF",
joinColumns = @JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID"),
inverseJoinColumns = @JoinColumn(name = "PRODUCT_OPTION_ID", referencedColumnName = "PRODUCT_OPTION_ID"))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements")
@BatchSize(size = 50)
@AdminPresentationCollection(friendlyName = "productOptionsTitle",
tab = Presentation.Tab.Name.ProductOptions, tabOrder = Presentation.Tab.Order.ProductOptions,
addType = AddMethodType.LOOKUP,
manyToField = "products",
operationTypes = @AdminPresentationOperationTypes(removeType = OperationType.NONDESTRUCTIVEREMOVE))
protected List<ProductOption> productOptions = new ArrayList<ProductOption>();
@Embedded
protected ArchiveStatus archiveStatus = new ArchiveStatus();
}
}
import org.apache.commons.collections.CollectionUtils;
导入org.apache.commons.collections.Predicate;
导入org.broadleafcommerce.common.admin.domain.adminEntity;
导入org.broadleafcommerce.common.media.domain.media;
导入org.broadleafcommerce.common.persistence.ArchiveStatus;
导入org.broadleafcommerce.common.persistence.Status;
导入org.broadleafcommerce.common.presentation.AdminPresentation;
导入org.broadleafcommerce.common.presentation.AdminPresentation或NedTargetCollection;
导入org.broadleafcommerce.common.presentation.AdminPresentationClass;
导入org.broadleafcommerce.common.presentation.AdminPresentationCollection;
导入org.broadleafcommerce.common.presentation.AdminPresentationMap;
导入org.broadleafcommerce.common.presentation.AdminPresentation操作类型;
导入org.broadleafcommerce.common.presentation.AdminPresentationOnOneLookup;
导入org.broadleafcommerce.common.presentation.populatetoonefeldsenum;
导入org.broadleafcommerce.common.presentation.RequiredOverride;
导入org.broadleafcommerce.common.presentation.client.AddMethodType;
导入org.broadleafcommerce.common.presentation.client.OperationType;
导入org.broadleafcommerce.common.presentation.client.VisibilityEnum;
导入org.broadleafcommerce.common.util.DateUtil;
导入org.broadleafcommerce.common.vendor.service.type.ContainerShapeType;
导入org.broadleafcommerce.common.vendor.service.type.ContainerSizeType;
@实体
@继承(策略=InheritanceType.JOINED)
@javax.persistence.Table(name=“BLC_产品”)
//在字段级别声明时,多列索引似乎无法正确导出,因此在此处声明是一种解决方法
@org.hibernate.annotations.Table(appliesTo=“BLC_PRODUCT”,索引={
@索引(name=“PRODUCT\u URL\u Index”,
columnNames={“URL”,“URL_KEY”}
)
})
@缓存(用法=cacheconcurrentystrategy.READ\u WRITE,region=“blStandardElements”)
@AdminPresentationClass(populateToOneFields=PopulateTooneFileSenum.TRUE,friendlyName=“baseProduct”)
@SQLDelete(sql=“更新BLC\U产品集存档='Y'其中产品\U ID=?”)
公共类ProductImpl实现产品、状态、AdminMainEntity{
私有静态最终日志日志=LogFactory.getLog(ProductImpl.class);
/**常量serialVersionId*/
私有静态最终长serialVersionUID=1L;
/**身份证*/
@身份证
@GeneratedValue(generator=“ProductId”)
@通用生成器(
name=“ProductId”,
strategy=“org.broadleafcommerce.common.persistence.IdOverrideTableGenerator”,
参数={
@参数(name=“segment\u value”,value=“ProductImpl”),
@参数(name=“entity\u name”,value=“org.broadleafcommerce.core.catalog.domain.ProductImpl”)
}
)
@列(name=“PRODUCT\u ID”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u ID”,可见性=VisibilityEnum.HIDDEN\u ALL)
保护长id;
@列(name=“URL”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u Url”,order=Presentation.FieldOrder.Url,
group=Presentation.group.Name.General,groupOrder=Presentation.group.Order.General,
突出显示=true,gridOrder=3,columnWidth=“200px”,
requiredOverride=requiredOverride.REQUIRED)
受保护的字符串url;
@列(name=“URL\u KEY”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u UrlKey”,
tab=Presentation.tab.Name.Advanced,tabOrder=Presentation.tab.Order.Advanced,
group=Presentation.group.Name.General,groupOrder=Presentation.group.Order.General,
排除=真)
受保护的字符串密钥;
@列(name=“显示模板”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u Display\u Template”,
tab=Presentation.tab.Name.Advanced,tabOrder=Presentation.tab.Order.Advanced,
group=Presentation.group.Name.Advanced,groupOrder=Presentation.group.Order.Advanced)
受保护的字符串显示模板;
@列(name=“MODEL”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u Model”,
tab=Presentation.tab.Name.Advanced,tabOrder=Presentation.tab.Order.Advanced,
group=Presentation.group.Name.Advanced,groupOrder=Presentation.group.Order.Advanced)
保护串模型;
@列(name=“制造”)
@AdminPresentation(friendlyName=“ProductImpl\u Product\u Manufacturer”,order=Presentation.FieldOrder.Manufacturer,
group=Presentation.group.Name.General,groupOrder=Presentation.group.Order.General,
突出=真,gridOrder=4)
保护管柱制造商;
@列(名称=“税务代码”)
受保护的字符串分类码;
@列(name=“IS\u characterized\u PRODUCT”,nullable=false)
@AdminPresentation(friendlyName=“ProductImpl”是特色产品”,requiredOverride=requiredOverride.NOT REQUIRED,
tab=Presentation.tab.Name.Marketing,tabOrder=Presentation.tab.Order.Marketing,
group=Presentation.group.Name.Badges,groupOrder=Presentation.group.Order.Badges)
受保护的布尔值isFeaturedProduct=false;
@OneToOne(可选=false,targetEntity=SkuImpl.class,cascade={CascadeType.ALL},mappedBy=“defaultProduct”)
@级联(值={org.hibernate.annotations.CascadeType.ALL})
受保护的Sku默认Sku;
@列(name=“没有期权就可以卖出”)
@AdminPresentation(friendlyName=“ProductImpl_
@AdminPresentation(friendlyName = "Product Origin")
public String productOrigin;