package com.utic.ptis.server.config; import com.utic.common.utils.StringUtils; import com.utic.ptis.server.UticPtisServerApplication; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.io.File; import java.io.FileInputStream; import java.util.HashSet; import java.util.List; import java.util.Properties; import java.util.Set; @Slf4j @Getter @Setter @ToString @RequiredArgsConstructor @Component public class TraceConfig { private Set debugLinks = new HashSet<>(); @PostConstruct private void init() { loadTraceInfo(); log.info("TraceConfig.init: debugLinks: {}", this.debugLinks); } private Properties getProperties() { String traceFileName = System.getProperty("user.dir") + File.separator + "conf" + File.separator + UticPtisServerApplication.APPLICATION_NAME + "-trace.cfg"; try { FileInputStream in = new FileInputStream(traceFileName); Properties props = new Properties(); props.load(in); in.close(); return props; } catch(Exception e) { // log.error("{}.getTraceFileInputStream: Exception1: {}", this.getClass().getSimpleName(), e.toString()); return null; } } public void loadTraceInfo() { try { this.debugLinks = new HashSet<>(); Properties props = getProperties(); if (props == null) { return; } String dumps = props.getProperty("DEBUG", "").trim(); if (!dumps.isEmpty()) { List linkIds = StringUtils.split(dumps, ","); this.debugLinks.addAll(linkIds); } } catch(Exception e) { log.error("{}.loadDebugInfo: Exception2: {}", this.getClass().getSimpleName(), e.toString()); } } public boolean isDebugLink(String linkId) { if (this.debugLinks == null || this.debugLinks.isEmpty()) { return false; } return this.debugLinks.contains(linkId); } }