Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Method Overload

    My DataSource
    Code:
    <DataSource ID="aviso" serverType="sql"
    
    tableName="aviso" 
    >
    
    <fields>
    
    		<field name="id_aviso" type="sequence" nativeName="ID_AVISO" primaryKey="true" hidden="true" />  
            <field name="dataFim" type="date" title="Data de Termíno" nativeName="DT_FIM" required="true" />
            <field name="dataInicio" type="date" title="Data de Início" nativeName="DT_INICIO" required="true"/>
            
            <field name="excluido" type="integer" title="Excluído" nativeName="EXCLUIDO" hidden="true">
            	
            </field>
            <field name="mensagem"  type="text"  title="Mensagem"  length="1000" nativeName="MENSAGEM"/>
            <field name="titulo" type="text" title="Título"  length="100" nativeName="TITULO"/>
    		
    
    </fields>
     
    <serverObject lookupStyle="new" className="Auditoria"/>
    
    
    </DataSource>
    My class
    Code:
    
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    import com.isomorphic.criteria.SimpleCriteria;
    import com.isomorphic.datasource.DSRequest;
    import com.isomorphic.datasource.DSResponse;
    import com.isomorphic.datasource.DataSource;
    import com.isomorphic.sql.SQLDataSource;
    
    
    public class Auditoria extends SQLDataSource {
    
    	private static final long serialVersionUID = 1L;
    
    	@Override
    	public DSResponse executeAdd(DSRequest dsRequest) throws Exception {
    
    		dsRequest.setFieldValue("excluido", 0);
    
    		DSResponse dsResponse = super.executeAdd(dsRequest);
    
    		salvaHistorico(dsResponse, "1", dsRequest.getClientSuppliedValues()
    				.get("justificativa").toString());
    		return dsResponse;
    	}
    
    	
    	@Override
    	public DSResponse executeRemove(DSRequest dsRequest) throws Exception {
    		DSResponse exclusaoLogica;
    
    		DataSource dataSource = dsRequest.getDataSource();
    
    		String chavePrimaria = dataSource.getPrimaryKey();
    		Map<String, Object> valoresCriteria = new HashMap<String, Object>();
    		valoresCriteria.put(chavePrimaria,
    				dsRequest.getFieldValue(chavePrimaria));
    
    		SimpleCriteria criteria = new SimpleCriteria(valoresCriteria);
    
    		Map<String, Object> valores = new HashMap<String, Object>();
    		valores.put("excluido", 1);
    		valores.put("justificativa",
    				dsRequest.getClientSuppliedValues().get("justificativa"));
    
    		@SuppressWarnings("unchecked")
    		Set<String> chaves = dsRequest.getValues().keySet();
    
    		for (String chave : chaves) {
    			if (!chave.startsWith("_") && !valores.containsKey(chave)) {
    				valores.put(chave, dsRequest.getValues().get(chave));
    			}
    		}
    
    		exclusaoLogica = this.executeUpdate(new DSRequest(dsRequest
    				.getDataSourceName(), "update").setCriteria(criteria)
    				.setValues(valores).setRPCManager(dsRequest.rpc));
    		salvaHistorico(exclusaoLogica, "3", dsRequest.getClientSuppliedValues()
    				.get("justificativa").toString());
    
    		return exclusaoLogica;
    	}
    
    	
    	@Override
    	public DSResponse executeFetch(DSRequest DsRequest) throws Exception { // NOSONAR
    
    		DsRequest.getCriteria().put("excluido", 0);
    		DSResponse dsResponse = super.executeFetch(DsRequest);
    
    		return dsResponse;
    	}
    
    	@Override
    	public DSResponse executeUpdate(DSRequest dsRequest) throws Exception {
    		DSResponse dsResponse = super.executeUpdate(dsRequest);
    
    		salvaHistorico(dsResponse, "2", dsRequest.getClientSuppliedValues()
    				.get("justificativa").toString());
    		return dsResponse;
    	}
    
    	private DSResponse salvaHistorico(DSResponse response, String operation,
    			String Justificativa) throws Exception {
    		/*
    		 * Gera o nome do DataSource de historico para cada entidade Padrao:
    		 * entidade.ds.xml entidadeHistorico.ds.xml
    		 */
    		String dataSourceHistorico;
    		dataSourceHistorico = response.getDataSource().getName() + "Historico";
    		DSRequest auditRequest = new DSRequest();
    
    		auditRequest.setDataSourceName(dataSourceHistorico);
    		auditRequest.setValues(response.getRecord());
    		auditRequest.setOperationType("add");
    
    		auditRequest.setFieldValue("operacao", operation);
    		auditRequest.setFieldValue("dataOperacao", new Date());
    		auditRequest.setFieldValue("justificativa", Justificativa);
    		auditRequest.setFieldValue("operador", "usuario");
    		// TODO modificar o usuario quando integrar com o SisAcesso
    
    		return auditRequest.execute();
    	}
    
    }
    I'm getting error :Class Auditoria defines multiple methods named: fetch....


    Any solutions?
    Last edited by t.gomes; 24 Jul 2013, 08:41.

    #2
    You seem to be getting confused between DMI vs Custom DataSources.

    If you are declaring a DMI, the target of the DMI should not be a subclass of DataSource.

    If you are declaring a custom DataSource, you use the serverConstructor attribute, not <serverObject>.

    Take a look at the QuickStart Guide, Server Framework chapter, for discussions of both approaches.

    Comment


      #3
      So, instead using serverobject, i must use serverConstructor in the datasource tag?

      Comment


        #4
        If you are subclassing DataSource, yes. But you should read or re-read the relevant QuickStart Guide sections before proceeding, so you can clear up your confusion.

        Comment


          #5
          Still not working:
          Log:"
          WARN BasicDataSource - Couldn't create DataSource aviso as an isntance of class "Auditoria", creating as normal DataSource.Problem was:
          java.lang.ClassNotFoundException: Auditoria


          "

          Comment


            #6
            Use the fully qualified Java classname.

            Comment


              #7
              I'm using it, whole path. I have removed due to security issues

              Comment

              Working...
              X