Record Store

7 respostas
V

Pessoal,

alguém sabe me dizer aonde fica armazenado os dados manipulados pelo record store? fica na memória do próprio aparelho ou no chip? tem a possibilidade de configurar isso?

obrigado.

7 Respostas

P

viniciusams:
Pessoal,

alguém sabe me dizer aonde fica armazenado os dados manipulados pelo record store? fica na memória do próprio aparelho ou no chip? tem a possibilidade de configurar isso?

obrigado.

Fica na memória e não tem a possibilidade de configurar. Ainda bem que é assim.

Se a pessoa quer usar um armazenamento em outros locais, que use outra API, como a FileConnection.

V

ok!

obrigado!

V

Boone, você consegue me ajudar neste problema?

continua sendo relacionado a RecordStore.

tenho classe abstrata Produto e quero armazenar e recuperar objetos de classes filhas de Produto. Para armazenar é beleza, faço da seguinte forma:

public void addProduto(Produto p) throws IOException, RecordStoreNotOpenException, RecordStoreException{
        try{
            byte[] rec = p.getBytes();
            rs.addRecord(rec, 0, rec.length);
        }catch(Exception e){
            System.out.println("ERRO - INSERÇÃO");
        }
    }

classe CD que herda de Produto:

public class CD extends Produto {
...
    public byte[] getBytes() throws IOException {
        ByteArrayOutputStream obs = new ByteArrayOutputStream();
        DataOutputStream writer = new DataOutputStream(obs);

        writer.writeUTF(this.getCategoria());
        writer.writeUTF(this.getNome());
        writer.writeUTF(this.getArtista());
        writer.writeUTF(this.getGravadora());
        writer.writeUTF(this.getAno());
        writer.writeUTF(this.getGenero());
        writer.writeDouble(this.getPreco());
        writer.flush();
        
        byte[] rec = obs.toByteArray();
        writer.close();
        obs.close();
        return rec;
        
    }

Agora para dar um get no RecordStore estou com dificuldade, porque eu tenho várias classes que herdam de Produto e pode ser qualquer uma.
Você saberia como posso fazer???

obrigado

P

instanceof não te ajuda a determinar qual é a classe que herda de Produto e por aí vc dá o devido tratamento ?

V

cara, instanceof era o ideal, porém estou desenvolvendo um framework, logo meu código não conhece as classes que serão filhas.
Tem outra solução? uso de hash table?

valeu

fabianofrizzo

viniciusams:
cara, instanceof era o ideal, porém estou desenvolvendo um framework, logo meu código não conhece as classes que serão filhas.
Tem outra solução? uso de hash table?

valeu

Reinventando a Roda…

Da uma olhada no floggy. Ele pode te auxiliar muito nas suas duvidas mesmo que vc queira fazer outro Frame

diogofabri

Ae brother, presentinho pra ti: 8) 8) 8) 8)

public void writeRecStore(String[] sData)throws 
    RecordStoreException {	
		try {	
			 
			    ByteArrayOutputStream strmBytes = new ByteArrayOutputStream();			    
			    DataOutputStream strmDataType = new DataOutputStream(strmBytes);
			    byte[] record;	
			    
			    strmDataType.writeUTF(sData[0]);
			    strmDataType.writeUTF(sData[1]);
			    strmDataType.writeUTF(sData[2]);
			    strmDataType.writeUTF(sData[3]);
			    strmDataType.writeUTF(sData[4]);
			    strmDataType.writeUTF(sData[5]);
			    strmDataType.writeUTF(sData[6]);
			   
			    strmDataType.flush();
			   
			    	record = strmBytes.toByteArray();
			    	rs.addRecord(record,0,record.length);
			    	
			    strmBytes.reset();//Inicia a escrita no começo do array interno
			    
			    strmBytes.close();
			    strmDataType.close();
			  
		     }   
			 catch (IOException e) {
                   e.printStackTrace();
             }			    
	}
	public  void readStream(byte[] data){
	
		try{	
			
			ByteArrayInputStream strmBytes = new ByteArrayInputStream(data);
			DataInputStream strmDataType = new DataInputStream(strmBytes);
		
				
			this.setNome(strmDataType.readUTF());
			this.setAddress(strmDataType.readUTF());
		        this.setTelefone(strmDataType.readUTF());
		        this.setBirthday(strmDataType.readUTF());
		        this.setIdade(strmDataType.readUTF());		
		        this.setFood(strmDataType.readUTF());
		        this.setMusic(strmDataType.readUTF());
			System.out.println("---------------------------");
			
			strmBytes.close();
			strmDataType.close();	
			
		}
		catch(Exception e){
			System.out.println("Nao há Registros!!!");
		}
	}

Caso você queira definir uma busca no RMS, recomendo escrever como primeiro campo, exemplo: Id , Nome.
Faça a comparação antes de ler os dados no rms.
E assim pegue todos os valores restantes do cadastro.

Lembrando, quando você faz um readUTF ou writeUTF o mesmo le e escreve na ordem dada.

Abraço.

Criado 27 de abril de 2009
Ultima resposta 2 de mai. de 2009
Respostas 7
Participantes 4