All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fashionbrot.support.ConfSourceParse Maven / Gradle / Ivy

package com.github.fashionbrot.support;

import com.github.fashionbrot.enums.ConfigTypeEnum;
import com.github.fashionbrot.util.CollectionUtil;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValue;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

@Slf4j
public class ConfSourceParse implements SourceParse {
    @Override
    public Properties parse(String context) {
        Properties p = null;
        try {
            p = parseProperties(context);
        }catch (Exception e){
            log.error("ConfSourceParse parse error context:{}",context,e);
        }
        if (p==null){
            p = new Properties();
        }
        return p;
    }

    @Override
    public Properties fileToProperties(File file) {
        Config  config = null;
        try {
            config = ConfigFactory.load(file.getPath());
        }catch (Exception e){
            log.error("ConfSourceParse fileToProperties error",e);
        }
        Properties p = parseProperties(config);
        if (p==null){
            p = new Properties();
        }
        return p;
    }

    @Override
    public ConfigTypeEnum sourceType() {
        return ConfigTypeEnum.CONF;
    }

    public static void main(String[] args) {

        Config  config = ConfigFactory.parseString("[lobbyserver] \n" +
                "  ip= ${globalIP}\n" +
                "  port= 9900\n" +
                "  rpc= 9901\n" +
                "\n");
        System.out.println(config.getString("lobbyserver.port"));

        String test ="{test{t1={t1=2}\n t2=2}}";
        Properties p = parseProperties(test);
        System.out.println(p.entrySet());
    }

    private static Properties parseProperties(String text){
        Config  config = ConfigFactory.parseString(text);
        return parseProperties(config);
    }

    private static Properties parseProperties(Config  config){
        Properties properties = new Properties();
        if (config!=null){
            Set> entries = config.entrySet();
            if (CollectionUtil.isNotEmpty(entries)){
                for(Map.Entry set : entries){
                    properties.put(set.getKey(),set.getValue().render());
                }
            }
        }
        return properties;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy