[Java debutant] Aide pour écrire des méthodes

Fermé
Jacques - 9 juin 2006 à 18:10
 Jacques - 11 juin 2006 à 20:10
Salut,

Pourriez-vous s'il vous plait m'indiquer comment faire pour coder les méthodes de ces différentes interfaces

En vous remerciant par avance

Ligne de Commande du Logiciel
La ligne de commande permet d'effectuer des requêtes sur un index

java -jar foogle.jar query [-n count] fichier.ext.idx expr
effectue une requête expr sur l'index fichier.ext.idx et affiche l'ensemble des lignes satisfaisant la requête.
-n permet de spécifier le nombre de résultat voulu.
Les requêtes sur l'index correspond à un arbre au format préfixé,
exemple "& toto | titi @t?t?" est équivalent à l'arbre
    
          &
toto            | 
        titi           @t?t?

L'opérateur ET ('&') reporte la ligne uniquement si les deux mots appartiennent à la ligne.
L'opérateur OU ('|') reporte la ligne si un des deux mots appartient à la ligne.
L'opérateur @ permet d'indiquer une expression régulière (au format PERL) pour rechercher les mots.
Lors de requête concernant beaucoup de résultat possible, il est possible de manipuler des itérateurs plutôt que des listes pour éviter d'avoir de grosses structures de données intermédiaires.

Les quelques interfaces à implémenter
import java.util.Collection;
public interface ContextStrategy {
  public Collection<? extends CharSequence> getContext(Result result);
}

--------------------------------------------------------------------------

import java.io.File;
import java.io.IOException;
import java.io.Reader;

import java.util.Map;
import java.util.regex.Pattern;


public interface FoogleFacade {
  public Index loadIndex(File indexFile)  throws IOException;
  
  public QueryFactory createQueryFactory(Index index);
}


public interface Index {
  public String getFilename();

  public ContextStrategy getContextStrategy();
}


public interface Query {
  public Iterable<? extends Result> execute();

  public Iterable<? extends Result> execute(int maxCount);
}

--------------------------------------------------------------------------

import java.util.regex.Pattern;

public interface QueryFactory {
 
  public Query query(CharSequence word);
  
  public Query query(Pattern pattern);
  
  public Query or(Query query1,Query query2);
  
  public Query and(Query query1,Query query2);
}


public interface Result {
  public int getLine();
}



pour pouvoir avoir comme main ceci:
FoogleFacade foogle = new FoogleFacadeImpl();

Index index=foogle.loadIndex(new File("bbe.idx"));
System.out.println("indexed filename:"+index.getFilename());

QueryFactory factory=foogle.createQueryFactory(index);
Query query=factory.and(factory2.query("God"),
    factory.query("solid"));

ContextStrategy contextStrategy=index.getContextStrategy();
for(Result result:query.execute(10)) {
    System.out.println("line:"+result.getLine());
    System.out.println("ctx:"+contextStrategy.getContext(result));
}
A voir également:

3 réponses

Bonjour,

j'aurais besoin d'aide pour coder la méthode createQueryFactory car je ne sais pas très bien comment il faut que je m'y prenne

Merci

Voici les quelques classes qui implémentent des interfaces:
interface:
import java.io.File;
import java.io.IOException;

public interface FoogleFacade {
  public Index loadIndex(File indexFile)  throws IOException;

 public QueryFactory createQueryFactory(Index index);
}



import java.io.File;

public interface Index {
	public String getFilename();
}


classe:
import java.io.*;

public class FacadeImpl implements Facade{
	public Index loadIndex(File indexFile)  throws IOException{
	String line = null;		
	
	Index index = new IndexImpl(indexFile.getAbsolutePath()); 
	LineNumberReader reader = new LineNumberReader(new FileReader(indexFile)); 
	while ((line=reader.readLine()) != null) { 
		System.out.println("#" + reader.getLineNumber() + " : " + line); 
	} 
	reader.close(); 
	
	return index; 
	} 
}


public class IndexImpl implements Index{

	String filename = ""; 
	
	public IndexImpl(String filename){
	
		super(); this.filename = filename; 
	
	} 
	public String getFileName(){

		return filename; 
	
	} 

}


Mon main :
import java.io.*;


public class Main{
	public static void main(String [] args){
	Facade facade = new FacadeImpl();
	try{
		Index index=facade.loadIndex(new File("bbe.idx"));
		System.out.println("indexed filename:"+index.getFilename());
	}catch(IOException e){
		System.out.println(e.getMessage());
	}
	}
}
1
Merci de me contacter si tu veux faire de la programmation a temps perdu en ligne en direct.
@+
0
Bonjour,

Est-ce que tu peux m'aider pour mon problème ?

Sinon, comment te contacter ?
0