static SourceArchiveAdapter getAdapter(DBHandle handle, OpenMode openMode, String tablePrefix,
			TaskMonitor monitor) throws VersionException, IOException, CancelledException {
		if (openMode == OpenMode.CREATE) {
			return new SourceArchiveAdapterV0(handle, tablePrefix, true);
		}
		try {
			return new SourceArchiveAdapterV0(handle, tablePrefix, false);
		}
		catch (VersionException e) {
			if (!e.isUpgradable() || openMode == OpenMode.UPDATE) {
				throw e;
			}
			SourceArchiveAdapter adapter = findReadOnlyAdapter(handle);
			if (openMode == OpenMode.UPGRADE) {
				adapter = upgrade(handle, adapter, tablePrefix, monitor);
			}
			return adapter;
		}
	}
Gets an adapter for working with the Data Type Archive ID database table. This table is 
intended to associate a unique ID with a particular project data type archive. When a data 
type is added to a program it can indicate save the ID of the archive where it originated. 
This can then be used to synchronize the program with that archive. The adapter is based 
on the version of the database associated with the specified database handle and the openMode.
@param handle handle to the database to be accessed.
@param openMode the mode this adapter is to be opened for (CREATE, UPDATE, READ_ONLY, UPGRADE).
@param tablePrefix prefix to be used with default table name
@param monitor the monitor to use for displaying status or for canceling.
@return the adapter for accessing the table of data type archive ID entries.
@throws VersionException if the database handle's version doesn't match the expected version.
@throws IOException if there is trouble accessing the database.
@throws CancelledException if task is cancelled
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/SourceArchiveAdapter.java