package com.example.model;
import net.csdn.annotation.jpa.callback.AfterSave;
import net.csdn.annotation.validate.Validate;
import net.csdn.jpa.model.Model;
import javax.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static net.csdn.common.collections.WowCollections.list;
import static net.csdn.common.collections.WowCollections.map;
import static net.csdn.validate.ValidateHelper.*;
/**
* User: WilliamZhu
* Date: 12-7-23
* Time: 下午4:52
*/
@Entity
public class Tag extends Model {
@Validate
private final static Map $name = map(presence, map("message", "{}字段不能为空"), uniqueness, map("message", "{}字段不能重复"));
@Validate
private final static Map $associated = map(associated, list("blog_tags"));
@OneToOne
private TagWiki tag_wiki;
@ManyToOne
private TagSynonym tag_synonym;
@OneToMany
private List<BlogTag> blog_tags = list();
@ManyToMany
private List<TagGroup> tag_groups = list();
@AfterSave
public void afterSave() {
// findService(RedisClient.class).exits(this.id().toString());
//BlogTag.create(map("object_id", 19)).save();
logger.info("我被保存了....");
}
public static Set<String> synonym(String wow_names) {
String[] names = wow_names.split(",");
Set<String> temp = new HashSet<String>();
for (String name : names) {
Tag tag = Tag.where("name=:name", map("name", name)).single_fetch();
if (tag == null) continue;
List<Tag> tags = Tag.where("tag_synonym=:tag_synonym", map("tag_synonym", tag.tag_synonym)).fetch();
for (Tag tag1 : tags) {
temp.add(tag1.attr("name", String.class));
}
}
return temp;
}
}