Hi again,
I have tried creating a test datatype from scratch and the behaviour is the same. XNAT detects it, updates the database, and it is configured in the administration page, with all checkboxes checked.
This is quite worrying because it prevents us from creating new experiments.
The schema:
<?xml version="1.0" encoding="UTF-8"?>
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TestElement" type="testdt:testData"></xs:element>
<xs:complexType name="testData">
<xs:annotation>
<xs:documentation>A test datatype</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="xnat:subjectAssessorData">
<xs:sequence>
<xs:element name="test_float" type="xs:float" maxOccurs="1" minOccurs="0"></xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
The model entry.
@XnatDataModel(value = "testdt:testData",
singular = "test",
plural = "tests",
code = "test")
The database change is picked up.
===========================
Database out of date... updating
CREATE TABLE testdt_testData_history (
testdata_info INTEGER
, change_user INTEGER
, id VARCHAR(255)
, previous_change_date TIMESTAMP
, history_id serial NOT NULL
, xft_version INTEGER
, change_date TIMESTAMP
, test_float FLOAT
, new_row_id VARCHAR(255)
, PRIMARY KEY (history_id) );
CREATE TABLE testdt_testData_meta_data (
xft_version VARCHAR(255)
, last_modified TIMESTAMP
, status VARCHAR(255)
, activation_date TIMESTAMP
, row_last_modified TIMESTAMP
, insert_date TIMESTAMP
, activation_user_xdat_user_id INTEGER
, insert_user_xdat_user_id INTEGER
, origin VARCHAR(255)
, modified INTEGER
, shareable INTEGER
, meta_data_id serial NOT NULL
, PRIMARY KEY (meta_data_id) );
CREATE TABLE testdt_testData (
id VARCHAR(255) NOT NULL DEFAULT ''
, test_float FLOAT
, testData_info INTEGER
, PRIMARY KEY (id) );
ALTER TABLE testdt_testData_meta_data
ADD FOREIGN KEY (activation_user_xdat_user_id) REFERENCES xdat_user(xdat_user_id) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE testdt_testData_meta_data
ADD FOREIGN KEY (insert_user_xdat_user_id) REFERENCES xdat_user(xdat_user_id) ON DELETE SET NULL ON UPDATE CASCADE;
CREATE INDEX testdt_testdata_meta_data_activation_user_xdat_user_id1 ON testdt_testData_meta_data(activation_user_xdat_user_id);
CREATE INDEX testdt_testdata_meta_data_insert_user_xdat_user_id1_hash ON testdt_testData_meta_data USING HASH (insert_user_xdat_user_id);
CREATE INDEX testdt_testdata_meta_data_activation_user_xdat_user_id1_hash ON testdt_testData_meta_data USING HASH (activation_user_xdat_user_id);
CREATE INDEX testdt_testdata_meta_data_meta_data_id1_hash ON testdt_testData_meta_data USING HASH (meta_data_id);
CREATE INDEX testdt_testdata_meta_data_insert_user_xdat_user_id1 ON testdt_testData_meta_data(insert_user_xdat_user_id);
ALTER TABLE testdt_testData
ADD FOREIGN KEY (id) REFERENCES xnat_subjectAssessorData(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE testdt_testData
ADD FOREIGN KEY (testData_info) REFERENCES testdt_testData_meta_data(meta_data_id) ON DELETE SET NULL ON UPDATE CASCADE;
CREATE INDEX testdt_testdata_id1_hash ON testdt_testData USING HASH (id);
CREATE INDEX testdt_testdata_testdata_info1 ON testdt_testData(testData_info);
CREATE INDEX testdt_testdata_testdata_info1_hash ON testdt_testData USING HASH (testData_info);
CREATE INDEX testdt_testdata_id2_hash ON testdt_testData USING HASH (id);
CREATE INDEX testdt_testdata_id1 ON testdt_testData(id);
===========================
Is there a specific place where the datatypes are filtered that we could debug?
Thanks,
Santi