org.broadleafcommerce.common.presentation.AdminPresentationCollection Maven / Gradle / Ivy
/*
* Copyright 2008-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.broadleafcommerce.common.presentation;
import org.broadleafcommerce.common.presentation.client.AddMethodType;
import org.broadleafcommerce.common.presentation.client.OperationType;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* This annotation is used to describe a simple persistent collection
* for use by the admin tool.
*
* @author Jeff Fischer
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface AdminPresentationCollection {
/**
* Optional - field name will be used if not specified
*
* The friendly name to present to a user for this field in a GUI. If supporting i18N,
* the friendly name may be a key to retrieve a localized friendly name using
* the GWT support for i18N.
*
* @return the friendly name
*/
String friendlyName() default "";
/**
* Optional - only required if you wish to apply security to this field
*
* If a security level is specified, it is registered with the SecurityManager.
* The SecurityManager checks the permission of the current user to
* determine if this field should be disabled based on the specified level.
*
* @return the security level
*/
String securityLevel() default "";
/**
* Optional - fields are not excluded by default
*
* Specify if this field should be excluded from inclusion in the
* admin presentation layer
*
* @return whether or not the field should be excluded
*/
boolean excluded() default false;
/**
* Optional - only required if you want to make the field immutable
*
* Explicityly specify whether or not this field is mutable.
*
* @return whether or not this field is read only
*/
boolean readOnly() default false;
/**
* Optional - only required if you want to make the field ignore caching
*
* Explicitly specify whether or not this field will use server-side
* caching during inspection
*
* @return whether or not this field uses caching
*/
boolean useServerSideInspectionCache() default true;
/**
* Optional - only required if you want to lookup an item
* for this association, rather than creating a new instance of the
* target item. Note - if the type is changed to LOOKUP, this has
* the side effect of causing the only the association to be deleted
* during a remove, leaving the target lookup entity intact.
*
* Define whether or not added items for this
* collection are acquired via search or construction.
*
* @return the item is acquired via lookup or construction
*/
AddMethodType addType() default AddMethodType.PERSIST;
/**
* Optional - only required in the absence of a "mappedBy" property
* on the JPA annotation
*
* For the target entity of this collection, specify the field
* name that refers back to the parent entity.
*
* For collection definitions that use the "mappedBy" property
* of the @OneToMany and @ManyToMany annotations, this value
* can be safely ignored as the system will be able to infer
* the proper value from this.
*
* @return the parent entity referring field name
*/
String manyToField() default "";
/**
* Optional - only required if you want to specify ordering for this field
*
* The order in which this field will appear in a GUI relative to other collections from the same class
*
* @return the display order
*/
int order() default 99999;
/**
* Optional - only required if you want the field to appear under a different tab
*
* Specify a GUI tab for this field
*
* @return the tab for this field
*/
String tab() default "General";
/**
* Optional - only required if you want to order the appearance of the tabs in the UI
*
* Specify an order for this tab. Tabs will be sorted int he resulting form in
* ascending order based on this parameter.
*
* The default tab will render with an order of 100.
*
* @return the order for this tab
*/
int tabOrder() default 100;
/**
* Optional - only required if you need to specially handle crud operations for this
* specific collection on the server
*
* Custom string values that will be passed to the server during CRUB operations on this
* collection. These criteria values can be detected in a custom persistence handler
* (@CustomPersistenceHandler) in order to engage special handling through custom server
* side code for this collection.
*
* @return the custom string array to pass to the server during CRUD operations
*/
String[] customCriteria() default {};
/**
* Optional - only required if a special operation type is required for a CRUD operation. This
* setting is not normally changed and is an advanced setting
*
* The operation type for a CRUD operation
*
* @return the operation type
*/
AdminPresentationOperationTypes operationTypes() default @AdminPresentationOperationTypes(addType = OperationType.BASIC, fetchType = OperationType.BASIC, inspectType = OperationType.BASIC, removeType = OperationType.BASIC, updateType = OperationType.BASIC);
/**
* Optional - propertyName , only required if you want hide the field based on this property's value
*
* If the property is defined and found to be set to false, in the AppConfiguraionService, then this field will be excluded in the
* admin presentation layer
*
* @return name of the property
*/
String showIfProperty() default "";
/**
* Optional - If you have FieldType set to SupportedFieldType.MONEY, *
* then you can specify a money currency property field.
*
*
* @return the currency property field
*/
String currencyCodeField() default "";
}