import java.util.HashMap;
import java.util.Map;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;
import org.codehaus.jackson.annotate.JsonIgnore;
@MappedSuperclass
public class MenuDefinition {
/**
* menu's unique id.
* <p>
* 建议使用包格式
* </p>
*/
String id;
/**
* 菜单显示标签,一个简短的字符串.
*/
String label;
/**
* 与上一级菜单的关联. 这是一个弱关联的关系。除了参考id以外还能够使用位置表达式。
*
*/
String parentId;
/**
* 同级菜单排序,二维表格没有顺序值,所以需要记录,默认值应该是0.
*/
Integer seq = 0;
/**
* 描述字段,详细描述label。.
*
*/
String tooltip;
/**
* 菜单功能键,一个标准的URI表达式。.
*/
String URI;
/**
* 菜单图标地址,URL表达式。.
*/
String icon;
/**
* 类别,用来对菜单子类做区分。.
*/
String type;
/**
* 上下文帮助id.一个字符串.
*/
String helpContextId;
/**
* Available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
*/
String available;
/**
* 助记符,单个字母的快捷键提示。.
*/
String mnemonic;
/**
* 可扩展的字段.
*
*/
Map<String, Object> extra = new HashMap<String, Object>(5);
public MenuDefinition() {
}
/**
* Gets the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
*
* @return the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。
*/
public String getAvailable() {
return available;
}
/**
* Sets the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
*
* @param available
* the new available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。
*/
public void setAvailable(String available) {
this.available = available;
}
/**
* Gets the menu's unique id.
*
* @return the menu's unique id
*/
@Id
public String getId() {
return id;
}
/**
* Sets the menu's unique id.
*
* @param id
* the new menu's unique id
*/
public void setId(String id) {
this.id = id;
}
/**
* Gets the 菜单显示标签,一个简短的字符串.
*
* @return the 菜单显示标签,一个简短的字符串
*/
public String getLabel() {
return label;
}
/**
* Sets the 菜单显示标签,一个简短的字符串.
*
* @param label
* the new 菜单显示标签,一个简短的字符串
*/
public void setLabel(String label) {
this.label = label;
}
/**
* Gets the 与上一级菜单的关联.
*
* @return the 与上一级菜单的关联
*/
public String getParentId() {
return parentId;
}
/**
* Sets the 与上一级菜单的关联.
*
* @param parentId
* the new 与上一级菜单的关联
*/
public void setParentId(String parentId) {
this.parentId = parentId;
}
/**
* Gets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
*
* @return the 同级菜单排序,二维表格没有顺序值,所以需要记录。
*/
public int getSeq() {
return seq;
}
/**
* Sets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
*
* @param seq
* the new 同级菜单排序,二维表格没有顺序值,所以需要记录。
*/
public void setSeq(Integer seq) {
if (seq != null) {
this.seq = seq;
}
}
/**
* Sets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
*
* @param seq
* the new 同级菜单排序,二维表格没有顺序值,所以需要记录。
*/
@JsonIgnore
public void setSeq(int seq) {
this.seq = seq;
}
/**
* Gets the 描述字段,详细描述label。.
*
* @return the 描述字段,详细描述label。
*/
public String getTooltip() {
return tooltip;
}
/**
* Sets the 描述字段,详细描述label。.
*
* @param tooltip
* the new 描述字段,详细描述label。
*/
public void setTooltip(String tooltip) {
this.tooltip = tooltip;
}
/**
* Gets the 菜单功能键,一个标准的URI表达式。.
*
* @return the 菜单功能键,一个标准的URI表达式。
*/
public String getUri() {
return URI;
}
/**
* Sets the 菜单功能键,一个标准的URI表达式。.
*
* @param getURI
* the new 菜单功能键,一个标准的URI表达式。
*/
public void setUri(String getURI) {
this.URI = getURI;
}
/**
* Gets the 菜单图标地址,URL表达式。.
*
* @return the 菜单图标地址,URL表达式。
*/
public String getIcon() {
return icon;
}
/**
* Sets the 菜单图标地址,URL表达式。.
*
* @param icon
* the new 菜单图标地址,URL表达式。
*/
public void setIcon(String icon) {
this.icon = icon;
}
/**
* Gets the 类别,用来对菜单子类做区分。.
*
* @return the 类别,用来对菜单子类做区分。
*/
public String getType() {
return type;
}
/**
* Sets the 类别,用来对菜单子类做区分。.
*
* @param type
* the new 类别,用来对菜单子类做区分。
*/
public void setType(String type) {
this.type = type;
}
/**
* Gets the 上下文帮助id.
*
* @return the 上下文帮助id
*/
public String getHelpContextId() {
return helpContextId;
}
/**
* Sets the 上下文帮助id.
*
* @param helpContextId
* the new 上下文帮助id
*/
public void setHelpContextId(String helpContextId) {
this.helpContextId = helpContextId;
}
/**
* Gets the 可扩展的字段.
*
* @return the 可扩展的字段
*/
@Transient
public Map<String, Object> getExtra() {
return extra;
}
/**
* Sets the 可扩展的字段.
*
* @param extra
* the new 可扩展的字段
*/
public void setExtra(Map<String, Object> extra) {
this.extra = extra;
}
/**
* Gets the 助记符,单个字母的快捷键提示。.
*
* @return the 助记符,单个字母的快捷键提示。
*/
public String getMnemonic() {
return mnemonic;
}
/**
* Sets the 助记符,单个字母的快捷键提示。.
*
* @param mnemonic
* the new 助记符,单个字母的快捷键提示。
*/
public void setMnemonic(String mnemonic) {
this.mnemonic = mnemonic;
}
}
package com.lee.mvc.core.menu.jpa;
import java.io.IOException;
import java.util.Map;
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import com.lee.mvc.core.menu.MenuDefinition;
@Entity(name="menuDefinitionJpa")
@Table(name = "jmoco_ui_menu")
@AttributeOverride(name = "extra", column = @Column(name = "extra"))
public class MenuDefinitionJpa extends MenuDefinition {
ObjectMapper objectMapper = new ObjectMapper();
/**
* 返回扩展JSON字段,如果解析异常,就返回“{}”
*
* @return
*/
@Column(name = "extra")
public String getExtraJsonString() {
if (getExtra().size() > 0) {
try {
return objectMapper.writeValueAsString(getExtra());
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
return "{}";
}
return null;
}
/**
* 设置扩展的JSNO字符串。
*
* @param json
*/
public void setExtraJsonString(String json) {
if (json == null || "".equals(json)) {
} else {
try {
@SuppressWarnings("unchecked")
Map<String, Object> readValue = objectMapper.readValue(json, Map.class);
setExtra(readValue);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
}
}
Map 属性以JSON 形式存于数据库
点赞
收藏