Straiker123

Config.class

Oct 29th, 2020
953
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package me.DevTec.UltimateConfigAPI;
  2.  
  3. import java.io.File;
  4. import java.util.Arrays;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import me.DevTec.UltimateConfigAPI.Data.DataType;
  10.  
  11. public class Config {
  12.    
  13.     public static enum MergeType {
  14.         ADD_DEFAULTS,
  15.         ADD_DATA,
  16.         REMOVE_DEFAULTS,
  17.         REMOVE_DATA
  18.     }
  19.    
  20.     private final Map<String, Object> defaults = new HashMap<>();
  21.     private final Data f;
  22.     private DataType t;
  23.    
  24.     //merge
  25.     public Config(String path, DataType type, Config c, MergeType... merge) {
  26.         this(path, type);
  27.         merge(c, merge);
  28.     }
  29.    
  30.     public void merge(Config c, MergeType... merge) {
  31.         List<MergeType> todo = Arrays.asList(merge);
  32.         if(todo.contains(MergeType.REMOVE_DATA))f.clear();
  33.         if(todo.contains(MergeType.REMOVE_DEFAULTS))defaults.clear();
  34.         if(todo.contains(MergeType.ADD_DEFAULTS))defaults.putAll(c.defaults);
  35.         if(todo.contains(MergeType.ADD_DATA))f.merge(c.f, true, true);
  36.     }
  37.    
  38.     public void merge(Config c, boolean addHeader, boolean addFooter, MergeType... merge) {
  39.         List<MergeType> todo = Arrays.asList(merge);
  40.         if(todo.contains(MergeType.REMOVE_DATA))f.clear();
  41.         if(todo.contains(MergeType.REMOVE_DEFAULTS))defaults.clear();
  42.         if(todo.contains(MergeType.ADD_DEFAULTS))defaults.putAll(c.defaults);
  43.         if(todo.contains(MergeType.ADD_DATA))f.merge(c.f, addHeader, addFooter);
  44.     }
  45.    
  46.     public Config(String path) {
  47.         this(path, DataType.YAML);
  48.     }
  49.  
  50.     public Config(String path, DataType type) {
  51.         File file = new File("plugins/"+path);
  52.         if (!file.exists()) {
  53.             file.getParentFile().mkdirs();
  54.             try {
  55.                 file.createNewFile();
  56.             } catch (Exception e) {
  57.             }
  58.         }
  59.         f=new Data(file, true);
  60.         t=type;
  61.     }
  62.    
  63.     public DataType getType() {
  64.         return t;
  65.     }
  66.    
  67.     public void setType(DataType type) {
  68.         t=type;
  69.     }
  70.    
  71.     public void save() {
  72.         f.save(t);
  73.     }
  74.  
  75.     public void setHeader(List<String> texts) {
  76.         f.setHeader(texts);
  77.     }
  78.  
  79.     public List<String> getHeader() {
  80.         return f.getHeader();
  81.     }
  82.  
  83.     public void addHeader(String text) {
  84.         f.getHeader().add(text);
  85.     }
  86.  
  87.     public void setHeader(int position, String text) {
  88.         f.getHeader().set(position, text);
  89.     }
  90.  
  91.     public void removeHeader(String text) {
  92.         f.getHeader().remove(text);
  93.     }
  94.  
  95.     public void removeHeader(int position) {
  96.         f.getHeader().remove(position);
  97.     }
  98.    
  99.     public void setFooter(List<String> texts) {
  100.         f.setFooter(texts);
  101.     }
  102.  
  103.     public List<String> getFooter() {
  104.         return f.getFooter();
  105.     }
  106.  
  107.     public void addFooter(String text) {
  108.         f.getFooter().add(text);
  109.     }
  110.  
  111.     public void setFooter(int position, String text) {
  112.         f.getFooter().set(position, text);
  113.     }
  114.  
  115.     public void removeFooter(String text) {
  116.         f.getFooter().remove(text);
  117.     }
  118.  
  119.     public void removeFooter(int position) {
  120.         f.getFooter().remove(position);
  121.     }
  122.    
  123.     public void addDefaults(Map<String, Object> values) {
  124.         for(String key : values.keySet())
  125.             addDefault(key, values.get(key));
  126.     }
  127.  
  128.     public void addDefault(String key, Object value) {
  129.         defaults.put(key, value);
  130.         if(!f.exists(key))
  131.             f.set(key, value);
  132.     }
  133.    
  134.     public Map<String, Object> getDefaults(){
  135.         return defaults;
  136.    }
  137.  
  138.     public void reload() {
  139.         f.reload(f.getFile());
  140.     }
  141.    
  142.     public String getName() {
  143.         return f.getFile().getName();
  144.     }
  145.    
  146.     public boolean exists(String path) {
  147.         if(path==null)return false;
  148.         return f.exists(path);
  149.     }
  150.    
  151.     public Section getSection(String path) {
  152.         if(exists(path))
  153.         return new Section(path);
  154.         return null;
  155.     }
  156.    
  157.     public void remove(String path) {
  158.         if(path == null)return;
  159.         f.remove(path);
  160.     }
  161.    
  162.     public void set(String path, Object value) {
  163.         if(path == null)return;
  164.         f.set(path, value);
  165.     }
  166.    
  167.     public List<String> getKeys(String path) {
  168.         if(path == null)return null;
  169.         if(path.trim().isEmpty())
  170.             return f.getKeys();
  171.         return f.getKeys(path);
  172.     }
  173.    
  174.     public List<String> getKeys() {
  175.         return f.getKeys();
  176.     }
  177.    
  178.     public List<String> getKeys(String path, boolean sub) {
  179.         if(path == null)return null;
  180.         if(path.trim().isEmpty())
  181.             return f.getKeys(sub);
  182.         return f.getKeys(path, sub);
  183.     }
  184.    
  185.     public List<String> getKeys(boolean sub) {
  186.         return f.getKeys(sub);
  187.     }
  188.    
  189.     public List<String> getComments(String path) {
  190.         if(path == null)return null;
  191.         return f.getComments(path);
  192.     }
  193.    
  194.     public void setComments(String path, List<String> value) {
  195.         if(path == null)return;
  196.         f.setComments(path, value);
  197.     }
  198.    
  199.     public void addComment(String path, String... value) {
  200.         if(path != null && value != null)
  201.             for(String s : value)
  202.                 getComments(path).add(s);
  203.     }
  204.    
  205.     public void addComments(String path, List<String> value) {
  206.         if(path != null && value != null)
  207.         getComments(path).addAll(value);
  208.     }
  209.    
  210.     public void removeComment(String path, String... value) {
  211.         if(path != null && value != null)
  212.             for(String s : value)
  213.                 getComments(path).remove(s);
  214.     }
  215.    
  216.     public void removeComment(String path, List<String> value) {
  217.         if(path != null && value != null)
  218.         getComments(path).removeAll(value);
  219.     }
  220.    
  221.     public Object get(String path) {
  222.         if(path == null)return null;
  223.         return f.get(path);
  224.     }
  225.    
  226.     public int getInt(String path) {
  227.         if(path == null)return 0;
  228.         return f.getInt(path);
  229.     }
  230.    
  231.     public double getDouble(String path) {
  232.         if(path == null)return 0.0;
  233.         return f.getDouble(path);
  234.     }
  235.    
  236.     public long getLong(String path) {
  237.         if(path == null)return 0;
  238.         return f.getLong(path);
  239.     }
  240.    
  241.     public String getString(String path) {
  242.         if(path == null)return null;
  243.         return f.getString(path);
  244.     }
  245.    
  246.     public boolean getBoolean(String path) {
  247.         if(path == null)return false;
  248.         return f.getBoolean(path);
  249.     }
  250.    
  251.     public short getShort(String path) {
  252.         if(path == null)return 0;
  253.         return f.getShort(path);
  254.     }
  255.    
  256.     public byte getByte(String path) {
  257.         if(path == null)return 0;
  258.         return f.getByte(path);
  259.     }
  260.    
  261.     public float getFloat(String path) {
  262.         if(path == null)return 0;
  263.         return f.getFloat(path);
  264.     }
  265.    
  266.     public List<Object> getList(String path) {
  267.         if(path == null)return null;
  268.         return f.getList(path);
  269.     }
  270.    
  271.     public List<String> getStringList(String path) {
  272.         if(path == null)return null;
  273.         return f.getStringList(path);
  274.     }
  275.    
  276.     public List<Boolean> getBooleanList(String path) {
  277.         if(path == null)return null;
  278.         return f.getBooleanList(path);
  279.     }
  280.    
  281.     public List<Byte> getByteList(String path) {
  282.         if(path == null)return null;
  283.         return f.getByteList(path);
  284.     }
  285.    
  286.     public List<Integer> getIntegerList(String path) {
  287.         if(path == null)return null;
  288.         return f.getIntegerList(path);
  289.     }
  290.    
  291.     public List<Float> getFloatList(String path) {
  292.         if(path == null)return null;
  293.         return f.getFloatList(path);
  294.     }
  295.    
  296.     public List<Long> getLongList(String path) {
  297.         if(path == null)return null;
  298.         return f.getLongList(path);
  299.     }
  300.    
  301.     public List<Short> getShortList(String path) {
  302.         if(path == null)return null;
  303.         return f.getShortList(path);
  304.     }
  305.    
  306.     public List<Map<?,?>> getMapList(String path) {
  307.         if(path == null)return null;
  308.         return f.getMapList(path);
  309.     }
  310.    
  311.     public boolean isString(String path) {
  312.         return get(path) instanceof String;
  313.     }
  314.    
  315.     public boolean isNumber(String path) {
  316.         return get(path) instanceof Number;
  317.     }
  318.    
  319.     public boolean isInt(String path) {
  320.         return get(path) instanceof Integer;
  321.     }
  322.    
  323.     public boolean isInteger(String path) {
  324.         return get(path) instanceof Integer;
  325.     }
  326.    
  327.     public boolean isDouble(String path) {
  328.         return get(path) instanceof Double;
  329.     }
  330.    
  331.     public boolean isFloat(String path) {
  332.         return get(path) instanceof Float;
  333.     }
  334.    
  335.     public boolean isLong(String path) {
  336.         return get(path) instanceof Long;
  337.     }
  338.    
  339.     public boolean isByte(String path) {
  340.         return get(path) instanceof Byte;
  341.     }
  342.    
  343.     public boolean isShort(String path) {
  344.         return get(path) instanceof Short;
  345.     }
  346.    
  347.     public boolean isList(String path) {
  348.         return get(path) instanceof List;
  349.     }
  350.    
  351.     public boolean isMap(String path) {
  352.         return get(path) instanceof Map;
  353.     }
  354.    
  355.     public boolean isBoolean(String path) {
  356.         return get(path) instanceof Boolean;
  357.     }
  358.    
  359.     public boolean isSection(String path) {
  360.         return f.isKey(path);
  361.     }
  362.    
  363.     public Data getData() {
  364.         return f;
  365.     }
  366.    
  367.     public String toString() {
  368.         return "Data(Config:"+getName()+"/"+t.name()+")";
  369.     }
  370.    
  371.     public class Section {
  372.         private final String s;
  373.         public Section(String path) {
  374.             s=path;
  375.         }
  376.        
  377.         public boolean exists(String path) {
  378.             if(path.trim().isEmpty())
  379.                 return exists(s);
  380.             return exists(s+"."+path);
  381.         }
  382.        
  383.         public Config getConfig() {
  384.             return Config.this;
  385.         }
  386.        
  387.         public Section getSection(String path) {
  388.             if(exists(s+"."+path))
  389.             return new Section(s+"."+path);
  390.             return null;
  391.         }
  392.        
  393.         public boolean isSection(String path) {
  394.             if(path.trim().isEmpty())
  395.                 return isSection(s);
  396.             return isSection(s+"."+path);
  397.         }
  398.        
  399.         public void remove(String path) {
  400.             if(path.trim().isEmpty())
  401.                 remove(s);
  402.             else
  403.             remove(s+"."+path);
  404.         }
  405.        
  406.         public void set(String path, Object value) {
  407.             if(path == null)return;
  408.             if(path.trim().isEmpty())
  409.                 set(s, value);
  410.             else
  411.             set(s+"."+path, value);
  412.         }
  413.        
  414.         public List<String> getKeys(String path) {
  415.             if(path == null)return null;
  416.             if(path.trim().isEmpty())
  417.                 return getKeys(s);
  418.             return getKeys(s+"."+path);
  419.         }
  420.        
  421.         public List<String> getKeys(String path, boolean sub) {
  422.             if(path == null)return null;
  423.             if(path.trim().isEmpty())
  424.                 return getKeys(s, sub);
  425.             return getKeys(s+"."+path, sub);
  426.         }
  427.        
  428.         public List<String> getComments(String path) {
  429.             if(path == null)return null;
  430.             if(path.trim().isEmpty())
  431.                 return getComments(s);
  432.             return getComments(s+"."+path);
  433.         }
  434.        
  435.         public void setComments(String path, List<String> value) {
  436.             if(path == null)return;
  437.             if(path.trim().isEmpty())
  438.                 setComments(s, value);
  439.             else
  440.             setComments(s+"."+path, value);
  441.         }
  442.        
  443.         public void addComment(String path, String... value) {
  444.             if(path != null && value != null)
  445.                 for(String s : value)
  446.                     getComments(path).add(s);
  447.         }
  448.        
  449.         public void addComments(String path, List<String> value) {
  450.             if(path != null && value != null)
  451.             getComments(path).addAll(value);
  452.         }
  453.        
  454.         public void removeComment(String path, String... value) {
  455.             if(path != null && value != null)
  456.                 for(String s : value)
  457.                     getComments(path).remove(s);
  458.         }
  459.        
  460.         public void removeComment(String path, List<String> value) {
  461.             if(path != null && value != null)
  462.             getComments(path).removeAll(value);
  463.         }
  464.        
  465.         public Object get(String path) {
  466.             if(path == null)return null;
  467.             if(path.trim().isEmpty())
  468.                 return get(s);
  469.             return get(s+"."+path);
  470.         }
  471.        
  472.         public int getInt(String path) {
  473.             if(path == null)return 0;
  474.             if(path.trim().isEmpty())
  475.                 return getInt(s);
  476.             return getInt(s+"."+path);
  477.         }
  478.        
  479.         public double getDouble(String path) {
  480.             if(path == null)return 0.0;
  481.             if(path.trim().isEmpty())
  482.                 return getDouble(s);
  483.             return getDouble(s+"."+path);
  484.         }
  485.        
  486.         public long getLong(String path) {
  487.             if(path == null)return 0;
  488.             if(path.trim().isEmpty())
  489.                 return getLong(s);
  490.             return getLong(s+"."+path);
  491.         }
  492.        
  493.         public float getFloat(String path) {
  494.             if(path == null)return 0;
  495.             if(path.trim().isEmpty())
  496.                 return getFloat(s);
  497.             return getFloat(s+"."+path);
  498.         }
  499.        
  500.         public String getString(String path) {
  501.             if(path == null)return null;
  502.             if(path.trim().isEmpty())
  503.                 return getString(s);
  504.             return getString(s+"."+path);
  505.         }
  506.        
  507.         public boolean getBoolean(String path) {
  508.             if(path == null)return false;
  509.             if(path.trim().isEmpty())
  510.                 return getBoolean(s);
  511.             return getBoolean(s+"."+path);
  512.         }
  513.        
  514.         public short getShort(String path) {
  515.             if(path == null)return 0;
  516.             if(path.trim().isEmpty())
  517.                 return getShort(s);
  518.             return getShort(s+"."+path);
  519.         }
  520.        
  521.         public byte getByte(String path) {
  522.             if(path == null)return 0;
  523.             if(path.trim().isEmpty())
  524.                 return getByte(s);
  525.             return getByte(s+"."+path);
  526.         }
  527.        
  528.         public List<Object> getList(String path) {
  529.             if(path == null)return null;
  530.             if(path.trim().isEmpty())
  531.                 return getList(s);
  532.             return getList(s+"."+path);
  533.         }
  534.        
  535.         public List<String> getStringList(String path) {
  536.             if(path == null)return null;
  537.             if(path.trim().isEmpty())
  538.                 return getStringList(s);
  539.             return getStringList(s+"."+path);
  540.         }
  541.        
  542.         public List<Boolean> getBooleanList(String path) {
  543.             if(path == null)return null;
  544.             if(path.trim().isEmpty())
  545.                 return getBooleanList(s);
  546.             return getBooleanList(path);
  547.         }
  548.        
  549.         public List<Byte> getByteList(String path) {
  550.             if(path == null)return null;
  551.             if(path.trim().isEmpty())
  552.                 return getByteList(s);
  553.             return getByteList(s+"."+path);
  554.         }
  555.        
  556.         public List<Integer> getIntegerList(String path) {
  557.             if(path == null)return null;
  558.             if(path.trim().isEmpty())
  559.                 return getIntegerList(s);
  560.             return getIntegerList(s+"."+path);
  561.         }
  562.        
  563.         public List<Float> getFloatList(String path) {
  564.             if(path == null)return null;
  565.             if(path.trim().isEmpty())
  566.                 return getFloatList(s);
  567.             return getFloatList(s+"."+path);
  568.         }
  569.        
  570.         public List<Short> getShortList(String path) {
  571.             if(path == null)return null;
  572.             if(path.trim().isEmpty())
  573.                 return getShortList(s);
  574.             return getShortList(s+"."+path);
  575.         }
  576.        
  577.         public boolean isString(String path) {
  578.             return get(path) instanceof String;
  579.         }
  580.        
  581.         public boolean isNumber(String path) {
  582.             return get(path) instanceof Number;
  583.         }
  584.        
  585.         public boolean isInt(String path) {
  586.             return get(path) instanceof Integer;
  587.         }
  588.        
  589.         public boolean isInteger(String path) {
  590.             return get(path) instanceof Integer;
  591.         }
  592.        
  593.         public boolean isDouble(String path) {
  594.             return get(path) instanceof Double;
  595.         }
  596.        
  597.         public boolean isFloat(String path) {
  598.             return get(path) instanceof Float;
  599.         }
  600.        
  601.         public boolean isLong(String path) {
  602.             return get(path) instanceof Long;
  603.         }
  604.        
  605.         public boolean isByte(String path) {
  606.             return get(path) instanceof Byte;
  607.         }
  608.        
  609.         public boolean isShort(String path) {
  610.             return get(path) instanceof Short;
  611.         }
  612.        
  613.         public boolean isList(String path) {
  614.             return get(path) instanceof List;
  615.         }
  616.        
  617.         public boolean isMap(String path) {
  618.             return get(path) instanceof Map;
  619.         }
  620.        
  621.         public boolean isBoolean(String path) {
  622.             return get(path) instanceof Boolean;
  623.         }
  624.        
  625.         public List<Map<?,?>> getMapList(String path) {
  626.             if(path == null)return null;
  627.             if(path.trim().isEmpty())
  628.                 return getMapList(s);
  629.             return getMapList(s+"."+path);
  630.         }
  631.     }
  632. }
RAW Paste Data