/** * Copyright © ${project.inceptionYear} Instituto Superior Técnico * * This file is part of Fenix IST. * * Fenix IST is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Fenix IST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Fenix IST. If not, see <http://www.gnu.org/licenses/>. */ package pt.ist.fenix.service.services.manager; import java.io.File; import java.io.IOException; import org.fenixedu.academic.domain.Person; import org.fenixedu.academic.domain.organizationalStructure.Unit; import org.fenixedu.academic.service.services.exceptions.FenixServiceException; import org.fenixedu.bennu.core.groups.Group; import org.fenixedu.bennu.core.groups.UserGroup; import pt.ist.fenix.domain.UnitFile; import pt.ist.fenixframework.Atomic; import com.google.common.io.Files; public class CreateUnitFile { private static byte[] read(final File file) { try { return Files.toByteArray(file); } catch (IOException e) { throw new Error(e); } } @Atomic public static void run(java.io.File file, String originalFilename, String displayName, String description, String tags, Group permittedGroup, Unit unit, Person person) throws FenixServiceException { final byte[] content = read(file); new UnitFile(unit, person, description, tags, originalFilename, displayName, content, !isPublic(permittedGroup) ? permittedGroup.or(UserGroup.of(person.getUser())) : permittedGroup); } private static boolean isPublic(Group permittedGroup) { if (permittedGroup == null) { return true; } if (permittedGroup.isMember(null)) { return true; } return false; } }