/* * Copyright [2015] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the * "powered by wisemapping" text requirement on every single page; * you may not use this file except in compliance with the License. * You may obtain a copy of the license at * * http://www.wisemapping.org/license * * 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 com.wisemapping.model; import com.wisemapping.exceptions.AccessDeniedSecurityException; import com.wisemapping.exceptions.InvalidMindmapException; import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.util.ZipUtils; import org.apache.commons.lang.StringEscapeUtils; import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.persistence.*; import java.io.IOException; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.*; @Entity @Table(name = "MINDMAP") public class Mindmap implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "creation_date") private Calendar creationTime; @Column(name = "edition_date") private Calendar lastModificationTime; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "creator_id", unique = true) private User creator; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "last_editor_id", nullable = false) @NotFound(action = NotFoundAction.IGNORE) private User lastEditor; private String description; @Column(name = "public") private boolean isPublic; @OneToMany(mappedBy = "mindMap", orphanRemoval = true, cascade = {CascadeType.ALL}) private Set collaborations = new HashSet<>(); @ManyToMany(cascade = CascadeType.ALL) @JoinTable( name = "R_LABEL_MINDMAP", joinColumns = @JoinColumn(name = "mindmap_id"), inverseJoinColumns = @JoinColumn(name = "label_id")) private Set