001package conexp.fx.core.builder; 002 003/* 004 * #%L 005 * Concept Explorer FX 006 * %% 007 * Copyright (C) 2010 - 2023 Francesco Kriegel 008 * %% 009 * This program is free software: you can redistribute it and/or modify 010 * it under the terms of the GNU General Public License as 011 * published by the Free Software Foundation, either version 3 of the 012 * License, or (at your option) any later version. 013 * 014 * This program is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public 020 * License along with this program. If not, see 021 * <http://www.gnu.org/licenses/gpl-3.0.html>. 022 * #L% 023 */ 024 025import conexp.fx.core.builder.Requests.Source; 026import conexp.fx.core.builder.Requests.Type; 027import conexp.fx.core.context.MatrixContext; 028import conexp.fx.core.util.IdGenerator; 029import conexp.fx.gui.ConExpFX; 030 031public abstract class Request<G, M> { 032 033 public final Type type; 034 public final Source src; 035 protected MatrixContext<G, M> context; 036 037 public Request(final Type type, final Source src) { 038 super(); 039 if (!type.sources.contains(src)) 040 throw new IllegalArgumentException(); 041 this.type = type; 042 this.src = src; 043 } 044 045 public MatrixContext<G, M> createContext() { 046 context = new MatrixContext<G, M>(type.homogen); 047 return context; 048 } 049 050 public final MatrixContext<G, M> createContext(final MatrixContext.AutomaticMode automaticMode) { 051 context = new MatrixContext<G, M>(type.homogen, automaticMode); 052 return context; 053 } 054 055 public abstract void setContent() throws Exception; 056 057 public String getId() { 058 return type.title + " " + IdGenerator.getNextId(ConExpFX.instance); 059 } 060}