0
스칼라를 처음 사용했습니다.스칼라 목록 목록에서 사용자 정의 개체 채우기 방법
현재 데이터베이스의 테이블 메타 데이터를 아래 목록의 목록으로 가져 와서 사용자 정의 유형 TableFieldMetadata
의 개체로 변환하는 프로그램을 작성하려고합니다.
이 변환은 getAllTableMetaDataAsVO
기능입니다.
이 기능을 기능적으로 훨씬 잘 쓸 수 있는지 말해 줄 수 있습니까?
| **Table Name** | **FieldName** | **Data type** |
| table xxxxxx | field yyyyyy | type zzzz |
| table xxxxxx | field wwwww| type mmm|
| table qqqqqq| field nnnnnn| type zzzz |
주는 : 그것은 일반적으로 여러 열이 여기에 테이블 이름은 반복 할 수 있습니다.
사용자 정의 클래스 : 1. TableFieldMetadata :
/**
* Class to hold the meta data for a table
*/
class TableFieldMetadata (name: String){
var tableName: String = name
var fieldMetaDataList: List[FieldMetaData] = List()
def add(fieldMetadata: FieldMetaData) {
fieldMetaDataList = fieldMetadata :: fieldMetaDataList
}
}
2. FieldMetaData :
/**
* Class to hold the meta data for a field
*/
class FieldMetaData (fieldName: String, fieldsDataType: String) {
var name:String = fieldName
var dataType:String = fieldsDataType
}
기능 :
/**
* Function to convert list of lists to user defined objects
*/
def getAllTableMetaDataAsVO(allTableMetaData: List[List[String]]):List[TableFieldMetadata] = {
var currentTableName:String = null
var currentTable: TableFieldMetadata = null;
var tableFieldMetadataList: List[TableFieldMetadata] = List()
allTableMetaData.foreach { tableFieldMetadataItem =>
var tableName = tableFieldMetadataItem.head
if (currentTableName == null || !currentTableName.equals(tableName)) {
currentTableName = tableName
currentTable = new TableFieldMetadata(tableName)
tableFieldMetadataList = currentTable :: tableFieldMetadataList
}
if (currentTableName.equals(tableName)) {
var tableField = tableFieldMetadataItem.tail
currentTable.add(new FieldMetaData(tableField(0), tableField(1)))
}
}
return tableFieldMetadataList
}
감사합니다. 내가 바라는 것이 있습니다. – John