Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment : -34%
-34% LG OLED55B3 – TV OLED 4K 55″ 2023 ...
Voir le deal
919 €

descriptionTutoriel pour créer un greffon tube. EmptyTutoriel pour créer un greffon tube.

more_horiz
A compléter...

Code:

<
?xml version="1.
0" encoding="UTF-8"?>

<
greffon nom="Tube fichier" espece="fichier" class="org.
linotte.
greffons.
impl.
FichierTube">

<
lib>
tubeFichier.
zip<
/lib>

<
description>
Tube pour lire ou écrire dans un fichier<
/description>

<
auteur>
R.
M<
/auteur>

<
version>
0.
1<
/version>

<
/greffon>

Code:

package org.
linotte.
greffons.
impl;


import java.
io.
File;

import java.
io.
FileReader;

import java.
io.
FileWriter;

import java.
io.
IOException;

import java.
util.
Scanner;


import org.
linotte.
greffons.
externe.
Tube;


/**
*
* Tube fichier
*
* @author Mounès Ronan
*
*/
public class FichierTube extends Tube {

private static final String RETOUR_CHARIOT = System.
getProperty("line.
separator");


private Scanner in = null;


private FileWriter out = null;


private static final String ETAT_LECTURE = "lecture";


private static final String ETAT_ECRITURE_AJOUT = "ajout";


private static final String ETAT_ECRITURE_ECRASEMENT = "écrasement";


public FichierTube() {
}

@Override
public boolean ouvrir(String état, String paramètres) throws GreffonException {
RessourceManager ressourceManager = getRessourceManager();

String fichier;

if (ressourceManager != null)
fichier = ressourceManager.
analyserChemin(paramètres);

else
fichier = paramètres;


try {
if (ETAT_LECTURE.
equals(état)) {
in = new Scanner(new FileReader(fichier));

out = null;

} else if (ETAT_ECRITURE_AJOUT.
equals(état)) {
creationRepertoire(fichier);

out = new FileWriter(fichier, true);

in = null;

} else if (ETAT_ECRITURE_ECRASEMENT.
equals(état)) {
creationRepertoire(fichier);

out = new FileWriter(fichier, false);

in = null;

} else {
throw new GreffonException("l'état doit être écriture '" + ETAT_ECRITURE_AJOUT + "', '" + ETAT_ECRITURE_ECRASEMENT + "' ou '" + ETAT_LECTURE + "' !");

}
} catch (Exception e) {
throw new GreffonException("Impossible d'ouvrir et de créer ce fichier (" + e.
getMessage() + ") :
" + fichier);

}
return false;

}

private void creationRepertoire(String fichier) {
try {
new File(fichier).
getParentFile().
mkdirs();

} catch (Exception e) {
}
}

@Override
public ObjetLinotte decharger(ObjetLinotte structure) throws GreffonException {
if (in == null) {
throw new GreffonException("Le tube doit être ouvert en lecture avant d'être déchargé !");

}
if (structure instanceof Acteur) {
Acteur acteur = (Acteur) structure;

if (!in.
hasNext()) {
throw new GreffonException("Le tube est vide !");

}
String valeur = in.
nextLine();

acteur.
setValeur(valeur);

return acteur;

} else if (structure instanceof Casier) {
Casier casier = (Casier) structure;

Casier retour = new Casier();

for (ObjetLinotte element :
casier) {
if (element instanceof Acteur) {
while (in.
hasNext()) {
retour.
add(decharger(element.
clone()));

}
} else if (element instanceof Espece) {
while (in.
hasNext()) {
retour.
add(decharger(element.
clone()));

}
} else {
throw new GreffonException("Structure incorrecte !");

}
}
return retour;

} else if (structure instanceof Espece) {
Espece espece = (Espece) structure;

for (Acteur acteur :
espece) {
decharger(acteur);

}
return espece;

} else {
throw new GreffonException("Structure incorrecte !");

}
}

@Override
public ObjetLinotte decharger(String paramètres, ObjetLinotte structure) throws GreffonException {
return decharger(structure);

}

@Override
public boolean charger(ObjetLinotte structure) throws GreffonException {
if (out == null) {
throw new GreffonException("Le tube doit être ouvert en écriture pour être chargé !");

}
if (structure instanceof Acteur) {
Acteur acteur = (Acteur) structure;

try {
out.
write(String.
valueOf(acteur.
getValeur()));

out.
write(RETOUR_CHARIOT);

} catch (IOException e) {
return false;

}
return true;

} else if (structure instanceof Casier) {
Casier casier = (Casier) structure;

for (ObjetLinotte objet :
casier) {
charger(objet);

}
} else if (structure instanceof Espece) {
Espece espece = (Espece) structure;

for (ObjetLinotte objet :
espece) {
charger(objet);

}
} else {
throw new GreffonException("Structure incorrecte !");

}
return false;

}

@Override
public boolean charger(String paramètres, ObjetLinotte valeurs) throws GreffonException {
return charger(valeurs);

}

@Override
public boolean fermer() throws GreffonException {
if (in != null) {
in.
close();

return true;

} else if (out != null) {
try {
out.
close();

} catch (IOException e) {
}
return true;

} else {
throw new GreffonException("Le tube doit être ouvert avant d'être fermé !");

}
}

@Override
public boolean configurer(String paramètres) throws GreffonException {
return true;

}

}

descriptionTutoriel pour créer un greffon tube. EmptyTutoriel pour créer un greffon tube.

more_horiz
Bonsoir,

Il faudrait voir à simplifier la création de greffons (adopter une syntaxe linocienne…), car le Java c’est du chinois pour moi, j’utilise linotte justement pour ne pas avoir à me farcir la syntaxe de ce type de langage.

Merci de votre compréhension.

Cordialement pat.
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre