summaryrefslogtreecommitdiff
path: root/support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java
diff options
context:
space:
mode:
Diffstat (limited to 'support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java')
-rw-r--r--support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java291
1 files changed, 291 insertions, 0 deletions
diff --git a/support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java b/support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java
new file mode 100644
index 0000000000..2994a4d691
--- /dev/null
+++ b/support/arara/source/src/main/java/com/github/cereda/arara/model/Resource.java
@@ -0,0 +1,291 @@
+/**
+ * Arara, the cool TeX automation tool
+ * Copyright (c) 2012 -- 2018, Paulo Roberto Massa Cereda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the project's author nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+ * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package com.github.cereda.arara.model;
+
+import com.github.cereda.arara.utils.CommonUtils;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
+import org.apache.commons.lang.SystemUtils;
+import org.mvel2.templates.TemplateRuntime;
+
+/**
+ * Implements the configuration resource model.
+ * @author Paulo Roberto Massa Cereda
+ * @version 4.0
+ * @since 4.0
+ */
+public class Resource {
+
+ // rule paths
+ private List<String> paths;
+
+ // file types
+ private List<FileTypeResource> filetypes;
+
+ // the application language
+ private String language;
+
+ // maximum number of loops
+ private long loops;
+
+ // verbose flag
+ private boolean verbose;
+
+ // logging flag
+ private boolean logging;
+
+ // database name
+ private String dbname;
+
+ // log name
+ private String logname;
+
+ // header flag
+ private boolean header;
+
+ // map of preambles
+ private Map<String, String> preambles;
+
+ // look and feel
+ private String laf;
+
+ /**
+ * Gets the rule paths.
+ * @return The rule paths.
+ */
+ public List<String> getPaths() {
+ if (paths != null) {
+
+ final Map<String, Object> map = new HashMap<String, Object>();
+ Map<String, Object> user = new HashMap<String, Object>();
+ user.put("home", SystemUtils.USER_HOME);
+ user.put("dir", SystemUtils.USER_DIR);
+ user.put("name", SystemUtils.USER_NAME);
+ map.put("user", user);
+
+ Collection<String> result = CollectionUtils.collect(
+ paths, new Transformer<String, String>() {
+ public String transform(String input) {
+ String path = CommonUtils.removeKeyword(input);
+ try {
+ path = (String) TemplateRuntime.eval(path, map);
+ }
+ catch (RuntimeException nothandled) {
+ // do nothing, gracefully fallback to
+ // the default, unparsed path
+ }
+ return path;
+ }
+ });
+ paths = new ArrayList<String>(result);
+ }
+ return paths;
+ }
+
+ /**
+ * Sets the rule paths.
+ * @param paths The rule paths.
+ */
+ public void setPaths(List<String> paths) {
+ this.paths = paths;
+ }
+
+ /**
+ * Gets the list of file types.
+ * @return The list of file types.
+ */
+ public List<FileTypeResource> getFiletypes() {
+ return filetypes;
+ }
+
+ /**
+ * Sets the list of file types.
+ * @param filetypes The list of file types.
+ */
+ public void setFiletypes(List<FileTypeResource> filetypes) {
+ this.filetypes = filetypes;
+ }
+
+ /**
+ * Gets the language.
+ * @return The language.
+ */
+ public String getLanguage() {
+ return CommonUtils.removeKeyword(language);
+ }
+
+ /**
+ * Sets the language.
+ * @param language The language.
+ */
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ /**
+ * Get the maximum number of loops.
+ * @return The maximum number of loops.
+ */
+ public long getLoops() {
+ return loops;
+ }
+
+ /**
+ * Sets the maximum number of loops.
+ * @param loops The maximum number of loops.
+ */
+ public void setLoops(long loops) {
+ this.loops = loops;
+ }
+
+ /**
+ * Checks if verbose mode is active.
+ * @return A boolean value.
+ */
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ /**
+ * Sets the verbose mode.
+ * @param verbose A boolean value.
+ */
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ /**
+ * Checks if logging mode is active.
+ * @return A boolean value.
+ */
+ public boolean isLogging() {
+ return logging;
+ }
+
+ /**
+ * Sets the logging mode.
+ * @param logging A boolean value.
+ */
+ public void setLogging(boolean logging) {
+ this.logging = logging;
+ }
+
+ /**
+ * Gets the database name.
+ * @return The database name.
+ */
+ public String getDbname() {
+ return CommonUtils.removeKeyword(dbname);
+ }
+
+ /**
+ * Sets the database name.
+ * @param dbname The database name.
+ */
+ public void setDbname(String dbname) {
+ this.dbname = dbname;
+ }
+
+ /**
+ * Gets the log name.
+ * @return The log name.
+ */
+ public String getLogname() {
+ return CommonUtils.removeKeyword(logname);
+ }
+
+ /**
+ * Sets the log name.
+ * @param logname The log name.
+ */
+ public void setLogname(String logname) {
+ this.logname = logname;
+ }
+
+ /**
+ * Gets the map of preambles.
+ * @return Map of preambles.
+ */
+ public Map<String, String> getPreambles() {
+ return preambles;
+ }
+
+ /**
+ * Sets the map of preambles.
+ * @param preambles Map of preambles.
+ */
+ public void setPreambles(Map<String, String> preambles) {
+ this.preambles = preambles;
+ }
+
+ /**
+ * Gets the logical value of the header flag.
+ * @return Logical value of the header flag.
+ */
+ public boolean isHeader() {
+ return header;
+ }
+
+ /**
+ * Sets the logical value of the header flag.
+ * @param header The header flag.
+ */
+ public void setHeader(boolean header) {
+ this.header = header;
+ }
+
+ /**
+ * Gets the look and feel reference.
+ * @return The look and feel reference.
+ */
+ public String getLaf() {
+ return CommonUtils.removeKeyword(laf);
+ }
+
+ /**
+ * Sets the look and feel reference.
+ * @param laf The look and feel reference.
+ */
+ public void setLaf(String laf) {
+ this.laf = laf;
+ }
+
+
+
+}