Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMetaData::SchemaRegistry Class Reference

#include <kis_meta_data_schema_registry.h>

Public Member Functions

const KisMetaData::Schemacreate (const QString &uri, const QString &prefix)
 
const SchemaschemaFromPrefix (const QString &prefix) const
 
const SchemaschemaFromUri (const QString &uri) const
 
 SchemaRegistry ()
 
 ~SchemaRegistry ()
 

Static Public Member Functions

static KisMetaData::SchemaRegistryinstance ()
 

Private Attributes

Private *const d
 

Detailed Description

Definition at line 20 of file kis_meta_data_schema_registry.h.

Constructor & Destructor Documentation

◆ SchemaRegistry()

SchemaRegistry::SchemaRegistry ( )

DO NOT USE! Use instance() instead. This constructor is public only to allow it to be used by Q_GLOBAL_STATIC. Same for the destructor.

Definition at line 33 of file kis_meta_data_schema_registry.cc.

34 : d(new Private)
35{
36 KoResourcePaths::addAssetType("metadata_schema", "data", "/metadata/schemas/");
37
38 QStringList schemasFilenames = KoResourcePaths::findAllAssets("metadata_schema", "*.schema");
39
40 Q_FOREACH (const QString& fileName, schemasFilenames) {
41 Schema* schema = new Schema();
42 schema->d->load(fileName);
43 if (schemaFromUri(schema->uri())) {
44 errMetaData << "Schema already exist uri: " << schema->uri();
45 delete schema;
46 } else if (schemaFromPrefix(schema->prefix())) {
47 errMetaData << "Schema already exist prefix: " << schema->prefix();
48 delete schema;
49 } else {
50 d->uri2Schema[schema->uri()] = schema;
51 d->prefix2Schema[schema->prefix()] = schema;
52 }
53 }
54
55 // DEPRECATED WRITE A SCHEMA FOR EACH OF THEM
57 create(Schema::IPTCSchemaUri, "Iptc4xmpCore");
59}
const Schema * schemaFromPrefix(const QString &prefix) const
const Schema * schemaFromUri(const QString &uri) const
const KisMetaData::Schema * create(const QString &uri, const QString &prefix)
static const QString PhotoshopSchemaUri
static const QString IPTCSchemaUri
static const QString MakerNoteSchemaUri
static void addAssetType(const QString &type, const char *basetype, const QString &relativeName, bool priority=true)
static QStringList findAllAssets(const QString &type, const QString &filter=QString(), SearchOptions options=NoSearchOptions)
#define errMetaData
Definition kis_debug.h:123

References KoResourcePaths::addAssetType(), create(), KisMetaData::Schema::d, d, errMetaData, KoResourcePaths::findAllAssets(), KisMetaData::Schema::IPTCSchemaUri, KisMetaData::Schema::MakerNoteSchemaUri, KisMetaData::Schema::PhotoshopSchemaUri, KisMetaData::Schema::prefix, schemaFromPrefix(), schemaFromUri(), and KisMetaData::Schema::uri.

◆ ~SchemaRegistry()

SchemaRegistry::~SchemaRegistry ( )

Definition at line 61 of file kis_meta_data_schema_registry.cc.

62{
63 delete d;
64}

References d.

Member Function Documentation

◆ create()

const Schema * SchemaRegistry::create ( const QString & uri,
const QString & prefix )

Creates a new schema.

Parameters
urithe name of the schema
prefixthe namespace prefix used for this schema
Returns
the schema associated with the uri (it can return 0, if no schema exist for the uri, but the prefix was already used, and it can be an already existing schema if the uri was already included)

Definition at line 77 of file kis_meta_data_schema_registry.cc.

78{
79 // First search for the schema
80 const Schema* schema = schemaFromUri(uri);
81 if (schema) {
82 return schema;
83 }
84 // Second search for the prefix
85 schema = schemaFromPrefix(prefix);
86 if (schema) {
87 return 0; // A schema with the same prefix already exist
88 }
89 // The schema doesn't exist yet, create it
90 Schema* nschema = new Schema(uri, prefix);
91 d->uri2Schema[uri] = nschema;
92 d->prefix2Schema[prefix] = nschema;
93 return nschema;
94}

References d, schemaFromPrefix(), and schemaFromUri().

◆ instance()

SchemaRegistry * SchemaRegistry::instance ( )
static

Return an instance of the SchemaRegistry. Creates an instance if that has never happened before and returns the singleton instance. Initialize it with default schemas.

Definition at line 28 of file kis_meta_data_schema_registry.cc.

29{
30 return s_instance;
31}

◆ schemaFromPrefix()

const Schema * SchemaRegistry::schemaFromPrefix ( const QString & prefix) const
Returns
the schema for this prefix

Definition at line 72 of file kis_meta_data_schema_registry.cc.

73{
74 return d->prefix2Schema[prefix];
75}

References d.

◆ schemaFromUri()

const Schema * SchemaRegistry::schemaFromUri ( const QString & uri) const
Returns
the schema for this uri

Definition at line 67 of file kis_meta_data_schema_registry.cc.

68{
69 return d->uri2Schema[uri];
70}

References d.

Member Data Documentation

◆ d

Private* const KisMetaData::SchemaRegistry::d
private

Definition at line 57 of file kis_meta_data_schema_registry.h.


The documentation for this class was generated from the following files: