@@ -18,43 +18,64 @@ def initialize(name = nil, fields = [], type = nil, uri = 'http://geoscript.org/
1818 fields . each do |field |
1919 if field . instance_of? GeoScript ::Feature ::Field
2020 name , type , proj = field . name , field . type , field . proj
21- else
22- if field . instance_of? Hash
21+ elsif field . instance_of? Hash
22+ if field [ :name ] && field [ :type ]
23+ name , type = field [ :name ] , field [ :type ]
24+ else
2325 name , type = field . keys . first , field . values . first
24- elsif field . instance_of? Array
25- name , type = field [ 0 ] , field [ 1 ]
26-
27- if type . kind_of? GeoScript ::Geom
28- proj = GeoScript ::Projection . new ( field [ 2 ] ) if field [ 2 ]
29- else
30- raise 'Invalid type specified. Must be of type GeoScript::Geom::*'
31- end
26+ end
27+
28+ if type . name . match /GeoScript::Geom/
29+ proj = GeoScript ::Projection . new ( field [ :proj ] ) if field [ :proj ]
30+ end
31+ elsif field . instance_of? Array
32+ name , type = field [ 0 ] , field [ 1 ]
33+
34+ if type . name . match /GeoScript::Geom/
35+ proj = GeoScript ::Projection . new ( field [ 2 ] ) if field [ 2 ]
3236 end
3337 end
3438 type_builder . crs proj if proj
35- type_builder . add name , type . java_class
36- @feature_type = type_builder . build_feature_type
39+ type_builder . add name , type . to_java . java_class
40+ p type_builder . attributes
3741 end
42+ @feature_type = type_builder . build_feature_type
3843 else
39- raise "No fields specified for feature type: #{ type } "
44+ if !name && fields . empty?
45+ raise "No name specified & No fields specified for type: #{ type } "
46+ elsif fields . empty?
47+ raise "No fields specified for type: #{ type } " if fields . empty?
48+ elsif !name
49+ raise 'No name specified'
50+ end
4051 end
4152 end
4253
43- def get_name
54+ def name
4455 @feature_type . name . local_part
4556 end
4657
47- def get_uri
58+ def uri
4859 @feature_type . name . namespaceURI
4960 end
5061
51- def get_proj
62+ def proj
5263 crs = @feature_type . coordinate_reference_system
5364 GeoScript ::Projection . new crs if crs
5465 end
5566
67+ def fields
68+ fields = [ ]
69+
70+ @feature_type . attribute_descriptors . each do |ad |
71+ fields << self . get ( ad . local_name )
72+ end
73+
74+ fields
75+ end
76+
5677 def get ( name )
57- ad = @feature_type . get_descriptor name
78+ @feature_type . get_descriptor name
5879 end
5980 end
6081 end
0 commit comments