/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2013 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.dataprocessing.datasource;
import com.servoy.j2db.IApplication;
import com.servoy.j2db.documentation.ServoyDocumented;
import com.servoy.j2db.scripting.IReturnedTypesProvider;
import com.servoy.j2db.scripting.ScriptObjectRegistry;
import com.servoy.j2db.scripting.annotations.JSReadonlyProperty;
import com.servoy.j2db.util.IDestroyable;
/**
* In scripting: <pre>datasources</pre>
*
* @author rgansevles
*
* @since 7.4
*
*/
@ServoyDocumented(category = ServoyDocumented.RUNTIME, publicName = "Datasources", scriptingName = "datasources")
public class JSDataSources implements IDestroyable
{
static
{
ScriptObjectRegistry.registerReturnedTypesProviderForClass(JSDataSources.class, new IReturnedTypesProvider()
{
public Class< ? >[] getAllReturnedTypes()
{
return new Class< ? >[] { JSDataSource.class };
}
});
}
private volatile IApplication application;
public JSDataSources(IApplication application)
{
this.application = application;
}
private DBDataSource db;
/**
* Scope property for server/table based data sources.
*
* @sample
* datasources.db.example_data.orders
*/
@JSReadonlyProperty
public DBDataSource db()
{
if (db == null)
{
db = new DBDataSource(application);
}
return db;
}
private MemDataSource mem;
/**
* Scope property for in-memory data sources.
*
* @sample
* datasources.mem['myds']
*/
@JSReadonlyProperty
public MemDataSource mem()
{
if (mem == null)
{
mem = new MemDataSource(application);
}
return mem;
}
public void destroy()
{
if (db != null)
{
db.destroy();
db = null;
}
if (mem != null)
{
mem.destroy();
mem = null;
}
application = null;
}
}