package config;
import java.awt.Dimension;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.util.OS;
public class Config {
/**
* the logger
*/
private Logger logger = Logger.getLogger(this.getClass().getName());
/**
* the instance
*/
private static Config instance;
/**
* mapping config to value
*/
private Map<String, String> config;
/**
* gets the singleton
*
* @return the Config
*/
public static Config getInstance() {
return instance;
}
/**
* Constructor for singleton
*/
private Config() {
}
/**
* inits the config
*
* @throws IOException
*/
public static void init() {
instance = new Config();
instance.readConfig();
}
/**
* reads the config file (default settings.conf)
*/
private void readConfig() {
logger.log(Level.CONFIG, "read config from: " + Constants.PATH + Constants.CONFIG_PATH);
this.config = new HashMap<>();
this.config.put("currWidth", "1394");
this.config.put("currHeight", "923");
this.config.put("currSkin", "com.jtattoo.plaf.hifi.HiFiLookAndFeel");
this.config.put("currLanguage", "en_US");
this.config.put("deleteID3v1Tag", "0");
this.config.put("setID3v1Tag", "0");
this.config.put("enableDragAndDrop", "1");
this.config.put("maskFile", Constants.PATH + "masks.txt");
this.config.put("updateURL", Constants.UPDATE_FILE_URL);
this.config.put("useCustomPlayer", "0");
this.config.put("customPlayerCmd", "");
this.config.put("confirmWriteTags", "1");
this.config.put("confirmChangeGain", "1");
this.config.put("confirmRenameFiles", "1");
this.config.put("confirmFolderGeneration", "1");
this.config.put("id3Root", Constants.DEFAULT_DIR);
this.config.put("id3Recursive", "1");
this.config.put("id3autoAdd", "0");
this.config.put("id3allChanged", "1");
this.config.put("useMaxImageLength", "1");
this.config.put("maxImageLength", "600");
this.config.put("id3dataCollectors", "");
this.config.put("coverCollectors", "");
this.config.put("lyricsCollectors", "");
this.config.put("id3OpenFolder", Constants.DEFAULT_DIR);
this.config.put("id3OpenFile", Constants.DEFAULT_DIR);
this.config.put("mp3gainAnalyseSelected", "0");
this.config.put("mp3gainChangeSelected", "0");
this.config.put("mp3gainTrackType", "1");
this.config.put("mp3gainForce", "0");
this.config.put("mp3gainRecursive", "1");
this.config.put("mp3gainTarget", "89");
this.config.put("mp3gainOpenFolder", Constants.DEFAULT_DIR);
this.config.put("mp3gainOpenFile", Constants.DEFAULT_DIR);
this.config.put("mp3gainPath", OS.isWindows() ? (Constants.PATH + "mp3gain/mp3gain.exe") : "mp3gain");
this.config.put("renameFilenameSelected", "0");
this.config.put("renameReplaceSpaceWithUnderscore", "0");
this.config.put("renameReplaceUnderscoreWithSpace", "0");
this.config.put("renameExtensionLowercase", "0");
this.config.put("renameExtensionUppercase", "0");
this.config.put("renameTrimFilename", "0");
this.config.put("renameRecursive", "1");
this.config.put("renameSource", "");
this.config.put("renameTarget", "");
this.config.put("renameReplace", "");
this.config.put("renameReplaceWith", "");
this.config.put("renameOpenFolder", Constants.DEFAULT_DIR);
this.config.put("renameOpenFile", Constants.DEFAULT_DIR);
this.config.put("generatorRecursive", "1");
this.config.put("generatorFilenameSelected", "0");
this.config.put("generatorRegex", "");
this.config.put("generatorTargetFolder", "");
this.config.put("generatorStructure", "");
this.config.put("generatorOpenFolder", Constants.DEFAULT_DIR);
this.config.put("generatorOpenFile", Constants.DEFAULT_DIR);
if (!new File(Constants.PATH + Constants.CONFIG_PATH).exists()) {
logger.log(Level.FINER, "Couldn't find config path. Default config will be loaded.");
return;
}
ConfigReader.findParameters(new File(Constants.PATH + Constants.CONFIG_PATH), this.config, "=");
if (!new File(this.config.get("id3Root")).exists())
this.config.put("id3Root", Constants.DEFAULT_DIR);
if (!new File(this.config.get("id3OpenFolder")).exists())
this.config.put("id3OpenFolder", Constants.DEFAULT_DIR);
if (!new File(this.config.get("id3OpenFile")).exists())
this.config.put("id3OpenFile", Constants.DEFAULT_DIR);
if (!new File(this.config.get("mp3gainOpenFolder")).exists())
this.config.put("mp3gainOpenFolder", Constants.DEFAULT_DIR);
if (!new File(this.config.get("mp3gainOpenFile")).exists())
this.config.put("mp3gainOpenFile", Constants.DEFAULT_DIR);
if (!new File(this.config.get("renameOpenFolder")).exists())
this.config.put("renameOpenFolder", Constants.DEFAULT_DIR);
if (!new File(this.config.get("renameOpenFile")).exists())
this.config.put("renameOpenFile", Constants.DEFAULT_DIR);
if (!new File(this.config.get("generatorOpenFolder")).exists())
this.config.put("generatorOpenFolder", Constants.DEFAULT_DIR);
if (!new File(this.config.get("generatorOpenFile")).exists())
this.config.put("generatorOpenFile", Constants.DEFAULT_DIR);
}
/**
* writes the config file (default settings.conf)
*
* @throws IOException
* thrown if config couldn't be read
*/
public void writeConfig() throws IOException {
logger.log(Level.CONFIG, "Write config to: " + Constants.PATH + Constants.CONFIG_PATH);
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(Constants.PATH + Constants.CONFIG_PATH)));
bw.write("###########\n");
bw.write("# General #\n");
bw.write("###########\n");
bw.write("# length and width of the window\n");
bw.write("currWidth=" + this.config.get("currWidth") + "\n");
bw.write("currHeight=" + this.config.get("currHeight") + "\n");
bw.write("# current selected skin\n");
bw.write("currSkin=" + this.config.get("currSkin") + "\n");
bw.write("# the current language\n");
bw.write("currLanguage=" + this.config.get("currLanguage") + "\n");
bw.write("# the url to the update file\n");
bw.write("updateURL=" + this.config.get("updateURL") + "\n");
bw.write("# the path to the mask file\n");
bw.write("maskFile=" + this.config.get("maskFile") + "\n");
bw.write("# true if id3v1 tag should be removed\n");
bw.write("deleteID3v1Tag=" + this.config.get("deleteID3v1Tag") + "\n");
bw.write("# true if id3v1 tag should be set too\n");
bw.write("setID3v1Tag=" + this.config.get("setID3v1Tag") + "\n");
bw.write("# enable drag and drop\n");
bw.write("enableDragAndDrop=" + this.config.get("enableDragAndDrop") + "\n");
bw.write("# use custom player\n");
bw.write("useCustomPlayer=" + this.config.get("useCustomPlayer") + "\n");
bw.write("# custom player cmd\n");
bw.write("customPlayerCmd=" + this.config.get("customPlayerCmd") + "\n");
bw.write("# confirm before writing tags\n");
bw.write("confirmWriteTags=" + this.config.get("confirmWriteTags") + "\n");
bw.write("# confirm before rename files\n");
bw.write("confirmRenameFiles=" + this.config.get("confirmRenameFiles") + "\n");
bw.write("# confirm change gain\n");
bw.write("confirmChangeGain=" + this.config.get("confirmChangeGain") + "\n");
bw.write("# confirm before generate folders\n");
bw.write("confirmFolderGeneration=" + this.config.get("confirmFolderGeneration") + "\n\n");
bw.write("##############\n");
bw.write("# ID3 Editor #\n");
bw.write("##############\n");
bw.write("# the Root directory\n");
bw.write("id3Root=" + this.config.get("id3Root") + "\n");
bw.write("# id3recursive checkbox\n");
bw.write("id3Recursive=" + this.config.get("id3Recursive") + "\n");
bw.write("# open file\n");
bw.write("id3OpenFile=" + this.config.get("id3OpenFile") + "\n");
bw.write("# open folder\n");
bw.write("id3OpenFolder=" + this.config.get("id3OpenFolder") + "\n");
bw.write("# autoadd checkbox\n");
bw.write("id3autoAdd=" + this.config.get("id3autoAdd") + "\n");
bw.write("# allChanged checkbox\n");
bw.write("id3allChanged=" + this.config.get("id3allChanged") + "\n");
bw.write("# use max image length\n");
bw.write("useMaxImageLength=" + this.config.get("useMaxImageLength") + "\n");
bw.write("# the max length of a cover\n");
bw.write("maxImageLength=" + this.config.get("maxImageLength") + "\n");
bw.write("# all used id3 data collectors\n");
bw.write("id3dataCollectors=" + this.config.get("id3dataCollectors") + "\n");
bw.write("# all used cover image collectors\n");
bw.write("coverCollectors=" + this.config.get("coverCollectors") + "\n");
bw.write("# all usec lyrics collectors\n");
bw.write("lyricsCollectors=" + this.config.get("lyricsCollectors") + "\n\n");
bw.write("############\n");
bw.write("# MP3 Gain #\n");
bw.write("############\n");
bw.write("# is analyse gain selected\n");
bw.write("mp3gainAnalyseSelected=" + this.config.get("mp3gainAnalyseSelected") + "\n");
bw.write("# is change selected selected\n");
bw.write("mp3gainChangeSelected=" + this.config.get("mp3gainChangeSelected") + "\n");
bw.write("# is track type selected\n");
bw.write("mp3gainTrackType=" + this.config.get("mp3gainTrackType") + "\n");
bw.write("# is force analyse selected\n");
bw.write("mp3gainForce=" + this.config.get("mp3gainForce") + "\n");
bw.write("# is recursive selected selected\n");
bw.write("mp3gainRecursive=" + this.config.get("mp3gainRecursive") + "\n");
bw.write("# target volume\n");
bw.write("mp3gainTarget=" + this.config.get("mp3gainTarget") + "\n");
bw.write("# open file\n");
bw.write("mp3gainOpenFile=" + this.config.get("mp3gainOpenFile") + "\n");
bw.write("# open folder\n");
bw.write("mp3gainOpenFolder=" + this.config.get("mp3gainOpenFolder") + "\n");
bw.write("# path to the mp3gain application\n");
bw.write("mp3gainPath=" + this.config.get("mp3gainPath") + "\n\n");
bw.write("###############\n");
bw.write("# Rename Tool #\n");
bw.write("###############\n");
bw.write("# get information from filename\n");
bw.write("renameFilenameSelected=" + this.config.get("renameFilenameSelected") + "\n");
bw.write("# replace space with underscore\n");
bw.write("renameReplaceSpaceWithUnderscore=" + this.config.get("renameReplaceSpaceWithUnderscore") + "\n");
bw.write("# replace underscore with space\n");
bw.write("renameReplaceUnderscoreWithSpace=" + this.config.get("renameReplaceUnderscoreWithSpace") + "\n");
bw.write("# extension lower case\n");
bw.write("renameExtensionLowercase=" + this.config.get("renameExtensionLowercase") + "\n");
bw.write("# extension upper case\n");
bw.write("renameExtensionUppercase=" + this.config.get("renameExtensionUppercase") + "\n");
bw.write("# trim filename\n");
bw.write("renameTrimFilename=" + this.config.get("renameTrimFilename") + "\n");
bw.write("# recursive selected\n");
bw.write("renameRecursive=" + this.config.get("renameRecursive") + "\n");
bw.write("# source field\n");
bw.write("renameSource=" + this.config.get("renameSource") + "\n");
bw.write("# target field\n");
bw.write("renameTarget=" + this.config.get("renameTarget") + "\n");
bw.write("# replace field\n");
bw.write("renameReplace=" + this.config.get("renameReplace") + "\n");
bw.write("# open file\n");
bw.write("renameOpenFile=" + this.config.get("renameOpenFile") + "\n");
bw.write("# open folder\n");
bw.write("renameOpenFolder=" + this.config.get("renameOpenFolder") + "\n");
bw.write("# replace with field\n");
bw.write("renameReplaceWith=" + this.config.get("renameReplaceWith") + "\n\n");
bw.write("####################\n");
bw.write("# Folder Generator #\n");
bw.write("####################\n");
bw.write("# recursive selected\n");
bw.write("generatorRecursive=" + this.config.get("generatorRecursive") + "\n");
bw.write("# filename selected\n");
bw.write("generatorFilenameSelected=" + this.config.get("generatorFilenameSelected") + "\n");
bw.write("# used regex\n");
bw.write("generatorRegex=" + this.config.get("generatorRegex") + "\n");
bw.write("# target folder\n");
bw.write("generatorTargetFolder=" + this.config.get("generatorTargetFolder") + "\n");
bw.write("# the structure\n");
bw.write("generatorStructure=" + this.config.get("generatorStructure") + "\n");
bw.write("# open file\n");
bw.write("generatorOpenFile=" + this.config.get("generatorOpenFile") + "\n");
bw.write("# open folder\n");
bw.write("generatorOpenFolder=" + this.config.get("generatorOpenFolder"));
bw.close();
}
public void setId3OpenFolder(String folder) {
this.config.put("id3OpenFolder", folder);
}
public String getID3OpenFolder() {
return this.config.get("id3OpenFolder");
}
public void setId3OpenFile(String file) {
this.config.put("id3OpenFile", file);
}
public String getID3OpenFile() {
return this.config.get("id3OpenFile");
}
public void setMp3gainOpenFile(String file) {
this.config.put("mp3gainOpenFile", file);
}
public String getMp3gainOpenFile() {
return this.config.get("mp3gainOpenFile");
}
public void setMp3gainOpenFolder(String file) {
this.config.put("mp3gainOpenFolder", file);
}
public String getMp3gainOpenFolder() {
return this.config.get("mp3gainOpenFolder");
}
public void setRenameOpenFolder(String file) {
this.config.put("renameOpenFolder", file);
}
public String getRenameOpenFolder() {
return this.config.get("renameOpenFolder");
}
public void setRenameOpenFile(String file) {
this.config.put("renameOpenFile", file);
}
public String getRenameOpenFile() {
return this.config.get("renameOpenFile");
}
public void setGeneratorOpenFile(String file) {
this.config.put("generatorOpenFile", file);
}
public String getGeneratorOpenFile() {
return this.config.get("generatorOpenFile");
}
public void setGeneratorOpenFolder(String file) {
this.config.put("generatorOpenFolder", file);
}
public String getGeneratorOpenFolder() {
return this.config.get("generatorOpenFolder");
}
public void setCurrDimension(Dimension dim) {
this.config.put("currWidth", Integer.toString((int) dim.getWidth()));
this.config.put("currHeight", Integer.toString((int) dim.getHeight()));
}
public Dimension getCurrDimension() {
return new Dimension(Integer.parseInt(this.config.get("currWidth")), Integer.parseInt(this.config.get("currHeight")));
}
public void setCurrentLanguage(Locale locale) {
this.config.put("currLanguage", locale.toString());
}
public Locale getCurrentLanguage() {
String[] tmp = this.config.get("currLanguage").split("_");
return new Locale(tmp[0], tmp[1]);
}
public void setDeleteID3v1Tag(boolean rem) {
this.config.put("deleteID3v1Tag", rem ? "1" : "0");
}
public boolean isDeleteID3v1Tag() {
return this.config.get("deleteID3v1Tag").equals("1");
}
public void setSetID3v1Tag(boolean set) {
this.config.put("setID3v1Tag", set ? "1" : "0");
}
public boolean isSetID3v1Tag() {
return this.config.get("setID3v1Tag").equals("1");
}
public void setEnableDragAndDrop(boolean rem) {
this.config.put("enableDragAndDrop", rem ? "1" : "0");
}
public boolean isDragAndDropEnabled() {
return this.config.get("enableDragAndDrop").equals("1");
}
public void setMasksPath(String path) {
this.config.put("maskFile", path);
}
public String getMasksPath() {
return this.config.get("maskFile");
}
public void setcurrentSkin(String skin) {
this.config.put("currSkin", skin);
}
public String getCurrentSkin() {
return this.config.get("currSkin");
}
public String getUpdateURL() {
return this.config.get("updateURL");
}
public void setUseCustomPlayer(boolean use) {
this.config.put("useCustomPlayer", use ? "1" : "0");
}
public boolean isUseCustomPlayer() {
return this.config.get("useCustomPlayer").equals("1");
}
public void setCustomPlayerCmd(String cmd) {
this.config.put("customPlayerCmd", cmd);
}
public String getCustomPlayerCmd() {
return this.config.get("customPlayerCmd");
}
public void setConfirmWriteTags(boolean use) {
this.config.put("confirmWriteTags", use ? "1" : "0");
}
public boolean isConfirmWriteTags() {
return this.config.get("confirmWriteTags").equals("1");
}
public void setConfirmChangeGain(boolean use) {
this.config.put("confirmChangeGain", use ? "1" : "0");
}
public boolean isConfirmChangeGain() {
return this.config.get("confirmChangeGain").equals("1");
}
public void setConfirmRenameFiles(boolean use) {
this.config.put("confirmRenameFiles", use ? "1" : "0");
}
public boolean isConfirmRenameFiles() {
return this.config.get("confirmRenameFiles").equals("1");
}
public void setConfirmFolderGeneration(boolean use) {
this.config.put("confirmFolderGeneration", use ? "1" : "0");
}
public boolean isConfirmFolderGeneration() {
return this.config.get("confirmFolderGeneration").equals("1");
}
public void setUseMaxImageLength(boolean use) {
this.config.put("useMaxImageLength", use ? "1" : "0");
}
public boolean isUseMaxImageLength() {
return this.config.get("useMaxImageLength").equals("1");
}
public int getMaxImageLength() {
return Integer.parseInt(this.config.get("maxImageLength"));
}
public void setMaxImageLength(String length) {
this.config.put("maxImageLength", length);
}
public void setID3DataCollectors(String collectors) {
this.config.put("id3dataCollectors", collectors);
}
public List<String> getID3DataCollectors() {
String c = this.config.get("id3dataCollectors");
List<String> result = new ArrayList<>();
if (c.trim().length() == 0)
return result;
String[] tmp = c.split(",");
for (int i = 0; i < tmp.length; i++)
result.add(tmp[i].trim());
return result;
}
public void setCoverCollectors(String collectors) {
this.config.put("coverCollectors", collectors);
}
public List<String> getCoverCollectors() {
String c = this.config.get("coverCollectors");
List<String> result = new ArrayList<>();
if (c.trim().length() == 0)
return result;
String[] tmp = c.split(",");
for (int i = 0; i < tmp.length; i++)
result.add(tmp[i].trim());
return result;
}
public void setLyricsCollectors(String collectors) {
this.config.put("lyricsCollectors", collectors);
}
public List<String> getLyricsCollectors() {
String c = this.config.get("lyricsCollectors");
List<String> result = new ArrayList<>();
if (c.trim().length() == 0)
return result;
String[] tmp = c.split(",");
for (int i = 0; i < tmp.length; i++)
result.add(tmp[i].trim());
return result;
}
public void setID3Root(String root) {
this.config.put("id3Root", root);
}
public String getID3Root() {
return this.config.get("id3Root");
}
public void setID3Recursive(boolean rec) {
this.config.put("id3Recursive", rec ? "1" : "0");
}
public boolean isID3Recursive() {
return this.config.get("id3Recursive").equals("1");
}
public void setID3AutoAdd(Boolean aa) {
this.config.put("id3autoAdd", aa ? "1" : "0");
}
public boolean isID3AutoAdd() {
return this.config.get("id3autoAdd").equals("1");
}
public void setID3AllChanged(boolean ac) {
this.config.put("id3allChanged", ac ? "1" : "0");
}
public boolean isID3AllChanged() {
return this.config.get("id3allChanged").equals("1");
}
public void setMP3gainAnalyseSelected(boolean sel) {
this.config.put("mp3gainAnalyseSelected", sel ? "1" : "0");
}
public boolean isMP3gainAnalyseSelected() {
return this.config.get("mp3gainAnalyseSelected").equals("1");
}
public void setMP3gainChangeSelected(boolean sel) {
this.config.put("mp3gainChangeSelected", sel ? "1" : "0");
}
public boolean isMP3gainChangeSelected() {
return this.config.get("mp3gainChangeSelected").equals("1");
}
public void setMP3GainTrackType(boolean sel) {
this.config.put("mp3gainTrackType", sel ? "1" : "0");
}
public boolean isMP3GainTrackType() {
return this.config.get("mp3gainTrackType").equals("1");
}
public void setMP3GainForceSelected(boolean sel) {
this.config.put("mp3gainForce", sel ? "1" : "0");
}
public boolean isMP3GainForceSelected() {
return this.config.get("mp3gainForce").equals("1");
}
public void setMP3GainRecursiveSelected(boolean sel) {
this.config.put("mp3gainRecursive", sel ? "1" : "0");
}
public boolean isMP3GainRecursiveSelected() {
return this.config.get("mp3gainRecursive").equals("1");
}
public void setMP3GainTarget(String target) {
this.config.put("mp3gainTarget", target);
}
public String getMP3GainTarget() {
return this.config.get("mp3gainTarget");
}
public String getMP3GainPath() {
return this.config.get("mp3gainPath");
}
public void setRenameFilenameSelected(boolean sel) {
this.config.put("renameFilenameSelected", sel ? "1" : "0");
}
public boolean isRenameFilenameSelected() {
return this.config.get("renameFilenameSelected").equals("1");
}
public void setRenameReplaceSpaceWithUnderscore(boolean sel) {
this.config.put("renameReplaceSpaceWithUnderscore", sel ? "1" : "0");
}
public boolean isRenameSpaceWithUnderscoreSelected() {
return this.config.get("renameReplaceSpaceWithUnderscore").equals("1");
}
public void setRenameReplaceUnderscoreWithSpace(boolean sel) {
this.config.put("renameReplaceUnderscoreWithSpace", sel ? "1" : "0");
}
public boolean isRenameUnderscoreWithSpaceSelected() {
return this.config.get("renameReplaceUnderscoreWithSpace").equals("1");
}
public void setRenameExtensionLowercase(boolean sel) {
this.config.put("renameExtensionLowercase", sel ? "1" : "0");
}
public boolean isRenameExtensionLowercaseSelected() {
return this.config.get("renameExtensionLowercase").equals("1");
}
public void setRenameExtensionUppercase(boolean sel) {
this.config.put("renameExtensionUppercase", sel ? "1" : "0");
}
public boolean isRenameExtensionUppercaseSelected() {
return this.config.get("renameExtensionUppercase").equals("1");
}
public void setRenameTrimFilename(boolean sel) {
this.config.put("renameTrimFilename", sel ? "1" : "0");
}
public boolean isRenameTrimFilenameSelected() {
return this.config.get("renameTrimFilename").equals("1");
}
public void setRenameRecursive(boolean sel) {
this.config.put("renameRecursive", sel ? "1" : "0");
}
public boolean isRenameRecursiveSelected() {
return this.config.get("renameRecursive").equals("1");
}
public void setRenameSource(String source) {
this.config.put("renameSource", source);
}
public String getRenameSource() {
return this.config.get("renameSource");
}
public void setRenameTarget(String target) {
this.config.put("renameTarget", target);
}
public String getRenameTarget() {
return this.config.get("renameTarget");
}
public void setRenameReplace(String rep) {
this.config.put("renameReplace", rep);
}
public String getRenameReplace() {
return this.config.get("renameReplace");
}
public void setRenameReplaceWith(String rep) {
this.config.put("renameReplaceWith", rep);
}
public String getRenameReplaceWith() {
return this.config.get("renameReplaceWith");
}
public void setGeneratorRecursive(boolean sel) {
this.config.put("generatorRecursive", sel ? "1" : "0");
}
public boolean isGeneratorRecursiveSelected() {
return this.config.get("generatorRecursive").equals("1");
}
public void setGeneratorFilenameSelected(boolean sel) {
this.config.put("generatorFilenameSelected", sel ? "1" : "0");
}
public boolean isGeneratorFilenameSelected() {
return this.config.get("generatorFilenameSelected").equals("1");
}
public void setGeneratorRegex(String r) {
this.config.put("generatorRegex", r);
}
public String getGeneratorRegex() {
return this.config.get("generatorRegex");
}
public void setGeneratorTargetFolder(String f) {
this.config.put("generatorTargetFolder", f);
}
public String getGeneratorTargetFolder() {
return this.config.get("generatorTargetFolder");
}
public void setGeneratorStructure(String s) {
this.config.put("generatorStructure", s);
}
public String getGeneratorStructure() {
return this.config.get("generatorStructure");
}
}