@startuml

set namespaceSeparator none

package "com.eactive.eai.data" as DataApi {
	interface DataService<T, I, R> {
		#jpaQueryFactory: JPAQueryFactory
		+save(entity: T): T
	}
	
	package "jpa" {
		interface BaseRepository<T, I> {
			save(entity: T): T
		}
		abstract AbstractDataService<T, I, R> implements DataService {
			save(entity: T): T
		}
	}
	package "mapper" {
		interface GenericMapper<V, E extends Data> {
			toEntity(vo: V): E
			toVo(entity: E): V
		}
	}
	package "entity" {
		package "onl.errorcode" {
			entity ErrorCode {
				-msg: String
			 	-msgctnt: String
			 	-treatmatrctnt: String
			}
		}
	}
}

package "com.eactive.eai.rms.onl.manage.comm.code" as ManService {
	class ErrorCodeManController {
		+insert(errorCodeUI: ErrorCodeUI): ResponseEntity<Void>
	}
	class ErrorCodeManService [[java:com.eactive.eai.rms.onl.manage.comm.code.ErrorCodeManService]] {
		+insert(errorCodVo: ErrorCodeUI): void
	}
	interface ErrorCodeUIMapper extends GenericMapper {
		toEntity(vo: ErrorCodeUI): ErrorCode
	}
	class ErrorCodeUI {
		-msg: String
	 	-msgCtnt: String
	 	-treatMatrCtnt: String
 	}
 	
	ErrorCodeManController -[thickness=3]-> ErrorCodeManService  : ErrorCodeUI >
	ErrorCodeUIMapper .[thickness=3].> ErrorCodeManService : ErrorCode >
	ErrorCodeManService -[thickness=3]-> ErrorCodeUIMapper : ErrorCodeUI >
	
	note bottom of ErrorCodeUIMapper : ManService에서 mapper 호출 
}

package "com.eactive.eai.rms.data.entity.onl.errorcode" as Data {
	class ErrorCodeSearch
	class ErrorCodeDTO
	interface ErrorCodeService extends DataService {
	    +save(errorCode: ErrorCode): ErrorCode
	}
	class ErrorCodeServiceImpl extends AbstractDataService implements ErrorCodeService {
	    +save(errorCode: ErrorCode): ErrorCode
	}
	interface ErrorCodeRepository extends BaseRepository  {
		save(errorCode: ErrorCode): ErrorCode
	}
	
	ErrorCodeService -[hidden]- ErrorCodeServiceImpl
	ErrorCodeServiceImpl -[hidden]- ErrorCodeRepository
	ErrorCodeSearch -[hidden]- ErrorCodeDTO
	ErrorCodeRepository -[hidden]- ErrorCodeSearch
	
	ErrorCodeServiceImpl -[thickness=3]-> ErrorCodeRepository
	ErrorCodeManService -[thickness=3]-> ErrorCodeService : ErrorCode >
}

@enduml
