Browse Source

Protocol config하는 중

v2
gudae01 1 year ago
parent
commit
1c04a221bd
  1. 2
      src/main/java/org/mobidgim/mobidigimproject/config/objectmapper/ObjectMapperConfig.java
  2. 59
      src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java
  3. 12
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java
  4. 1
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java
  5. 15
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java
  6. 18
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java
  7. 27
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FixmodeOn.java
  8. 27
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingImuOn.java
  9. 28
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingOn.java
  10. 3
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java
  11. 6
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java
  12. 3
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java
  13. 17
      src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java
  14. 852
      src/main/resources/static/index.html

2
src/main/java/org/mobidgim/mobidigimproject/config/objectmapper/ObjectMapperConfig.java

@ -21,7 +21,7 @@ public class ObjectMapperConfig {
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy()); // objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy());
return objectMapper; return objectMapper;
} }

59
src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java

@ -18,7 +18,7 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class RegisterDTO { public class RegisterDTO {
private AnalogInputLevel AnalogInputLevel; private AnalogInputLevel analogInputLevel;
private AnalogPort ai0; private AnalogPort ai0;
@ -48,10 +48,6 @@ public class RegisterDTO {
private FourByte fourByte; private FourByte fourByte;
private InputDataType inputDataType;
private OutputDataType outputDataType;
private Protocol protocol; private Protocol protocol;
private SpeedDataSource speedDataSource; private SpeedDataSource speedDataSource;
@ -62,52 +58,19 @@ public class RegisterDTO {
private String meid; private String meid;
private HeadingOn headingOn;
private HeadingImuOn headingImuOn;
private FixmodeOn fixmodeOn;
@JsonProperty("MODBUS") @JsonProperty("MODBUS")
private List<ModbusField> modbusFields; private List<ModbusField> MODBUS;
@JsonProperty("OPC_UA") @JsonProperty("OPC_UA")
private List<OpcUaField> opcUaFields; private List<OpcUaField> OPC_UA;
@JsonProperty("CAN") @JsonProperty("CAN")
private List<CanField> canFields; private List<CanField> CAN;
// @JsonProperty("ai0")
// public String getAi0AsString(){
// return BoolToString.convertToAnalogPortValue(ai0);
// }
//
// @JsonProperty("ai1")
// public String getAi1AsString(){
// return BoolToString.convertToAnalogPortValue(ai1);
// }
//
// @JsonProperty("ai2")
// public String getAi2AsString(){
// return BoolToString.convertToAnalogPortValue(ai2);
// }
//
// @JsonProperty("ai3")
// public String getAi3AsString(){
// return BoolToString.convertToAnalogPortValue(ai3);
// }
//
// @JsonProperty("di0")
// public String getDi0AsString(){
// return BoolToString.convertToAnalogPortValue(di0);
// }
//
// @JsonProperty("di1")
// public String getDi1AsString(){
// return BoolToString.convertToAnalogPortValue(di1);
// }
//
// @JsonProperty("di2")
// public String getDi2AsString(){
// return BoolToString.convertToAnalogPortValue(di2);
// }
//
// @JsonProperty("di3")
// public String getDi3AsString(){
// return BoolToString.convertToAnalogPortValue(di3);
// }
} }

12
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java

@ -1,5 +1,6 @@
package org.mobidgim.mobidigimproject.model.register.enums; package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -16,4 +17,15 @@ public enum AnalogInputLevel {
public String getAnalogInput() { public String getAnalogInput() {
return analogInput; return analogInput;
} }
@JsonCreator
public static AnalogInputLevel fromValue(String value) {
for (AnalogInputLevel level : AnalogInputLevel.values()) {
if (level.analogInput.equals(value)) {
return level;
}
}
// 만약 유효하지 않은 값이 들어왔을 때 처리 (예: 예외 발생 또는 기본값 반환)
throw new IllegalArgumentException("Unknown AnalogInputLevel value: " + value);
}
} }

1
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java

@ -22,7 +22,6 @@ public enum AnalogPort {
return AnalogPort.NOT_USED; return AnalogPort.NOT_USED;
} }
for(AnalogPort analogPort : AnalogPort.values()) { for(AnalogPort analogPort : AnalogPort.values()) {
if(analogPort.portValue.equals(portValue)) { if(analogPort.portValue.equals(portValue)) {
return analogPort; return analogPort;

15
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java

@ -1,16 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums; package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public enum CanInput { public enum CanInput {
On("on"), ON("on"),
Off("off"); OFF("off");
private final String canInput; private final String canInput;
@JsonValue @JsonValue
public String getCanInput() { public String getCanInput() {
return canInput; return canInput;
} }
@JsonCreator
public static CanInput fromValue(String value) {
for (CanInput ci : CanInput.values()) {
if (ci.canInput.equalsIgnoreCase(value)) { // 대소문자 무시를 위해 equalsIgnoreCase 사용 권장
return ci;
}
}
throw new IllegalArgumentException("Unknown CanInput value: " + value);
}
} }

18
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java

@ -1,17 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums; package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public enum DR { public enum DR {
On("on"), ON("on"),
Off("off"); OFF("off");
private final String DR; private final String dr;
@JsonValue @JsonValue
public String getDR() { public String getDR() {
return DR; return dr;
}
@JsonCreator // ⭐ 추가 ⭐
public static DR fromValue(String value) {
for (DR drEnum : DR.values()) {
if (drEnum.dr.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return drEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
} }
} }

27
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FixmodeOn.java

@ -0,0 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum FixmodeOn {
ON("on"),
OFF("off");
private final String fixmodeOn;
@JsonValue
public String getFixmodeOn() {
return fixmodeOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn fromValue(String value) {
for (org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn fixmodeOnEnum : org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn.values()) {
if (fixmodeOnEnum.fixmodeOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return fixmodeOnEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
}
}

27
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingImuOn.java

@ -0,0 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum HeadingImuOn {
ON("on"),
OFF("off");
private final String headingImuOn;
@JsonValue
public String getHeadingImuOn() {
return headingImuOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static HeadingImuOn fromValue(String value) {
for (HeadingImuOn headingImuOnEnum : HeadingImuOn.values()) {
if (headingImuOnEnum.headingImuOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return headingImuOnEnum;
}
}
throw new IllegalArgumentException("Unknown HeadingImuOn value: " + value);
}
}

28
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingOn.java

@ -0,0 +1,28 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum HeadingOn {
ON("on"),
OFF("off");
private final String headingOn;
@JsonValue
public String getHeadingOn() {
return headingOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static HeadingOn fromValue(String value) {
for (HeadingOn headingOnEnum : HeadingOn.values()) {
if (headingOnEnum.headingOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return headingOnEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
}
}

3
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter @Getter
@Setter @Setter
@ -15,7 +16,7 @@ public class CanField {
private String id; private String id;
@JsonProperty("odt") // output data type @JsonProperty("odt") // output data type
private String outputDataType; private OutputDataType outputDataType;
@JsonProperty("dv") // default value @JsonProperty("dv") // default value
private String defaultValue; private String defaultValue;

6
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java

@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.InputDataType;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter @Getter
@Setter @Setter
@ -13,12 +15,12 @@ public class ModbusField {
private String field; private String field;
@JsonProperty("idt") // input data type @JsonProperty("idt") // input data type
private String inputDataType; private InputDataType inputDataType;
private String addr; // address private String addr; // address
@JsonProperty("odt") // output data type @JsonProperty("odt") // output data type
private String outputDataType; private OutputDataType outputDataType;
@JsonProperty("dv") // default value @JsonProperty("dv") // default value
private String defaultValue; private String defaultValue;

3
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter @Getter
@Setter @Setter
@ -17,7 +18,7 @@ public class OpcUaField {
private String addr; // address private String addr; // address
@JsonProperty("odt") // output data type @JsonProperty("odt") // output data type
private String outputDataType; private OutputDataType outputDataType;
@JsonProperty("dv") // default value @JsonProperty("dv") // default value
private String defaultValue; private String defaultValue;

17
src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java

@ -1,6 +1,7 @@
package org.mobidgim.mobidigimproject.service; package org.mobidgim.mobidigimproject.service;
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import org.mobidgim.mobidigimproject.model.device.DeviceDTO; import org.mobidgim.mobidigimproject.model.device.DeviceDTO;
@ -31,6 +32,8 @@ public class SettingService {
@Autowired @Autowired
public SettingService(ObjectMapper mapper) { public SettingService(ObjectMapper mapper) {
this.mapper = mapper; this.mapper = mapper;
this.mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
} }
@ -59,15 +62,15 @@ public class SettingService {
public RegisterDTO saveFileWithRegister(RegisterDTO request) throws IOException { public RegisterDTO saveFileWithRegister(RegisterDTO request) throws IOException {
if (request.getProtocol() != Protocol.OPC_UA) { if (request.getProtocol() != Protocol.OPC_UA) {
request.setOpcUaFields(null); request.setOPC_UA(null);
} }
if (request.getProtocol() != Protocol.MODBUS) { if (request.getProtocol() != Protocol.MODBUS) {
request.setModbusFields(null); request.setMODBUS(null);
} }
if (request.getCanInput() != CanInput.On) { if (request.getCanInput() != CanInput.ON) {
request.setCanFields(null); request.setCAN(null);
} }
@ -90,7 +93,11 @@ public class SettingService {
String filename = "./temp/registerConfig.json"; String filename = "./temp/registerConfig.json";
Path filePath = Paths.get(filename); Path filePath = Paths.get(filename);
String jsonString = Files.readString(filePath); String jsonString = Files.readString(filePath);
return this.mapper.readValue(jsonString, RegisterDTO.class); ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
RegisterDTO registerDTO = mapper.readValue(jsonString, RegisterDTO.class);
return registerDTO;
} }
} }

852
src/main/resources/static/index.html

File diff suppressed because it is too large
Loading…
Cancel
Save