2017-03-07 7 views
-1

Il y a trois tables nommées car_details, bike_details, truck_details les champs sont les mêmes pour les trois tables (RegistrationNo, No.ofYearsOld, OwnerName, ContactNo, VehicleType) le champ VehicleType doit spécifier le type de véhicule (voiture ou vélo ou camion) et sa valeur par défaut est voiture.Basculer entre les tables et enregistrer les données en considérant un champ spécifique en utilisant le modèle de stratégie

Les trois tableaux ont leur POJO séparé et dépôt

La tâche est nécessaire pour sauvegarder les données dans la table correspondante en considérant le champ vehicleType.

Mon contrôleur

@RequestMapping (value = "/createVehicle/", method = RequestMethod.POST, consumes = "application/json") 
@ResponseBody 
public ResponseEntity<> createGeneralAuthentication (@RequestBody CarDetails carDetails) { 


     public void roleSelector(String type) { 

      switch (type){ 
       case "car": 
        return new CarRepository(); 
       break; 
       case "bike": 
        return new BikeRepository(); 
       break; 
       case "truk": 
        return new TruckRepository(); 
       break; 
      } 
     } 
    RolesRepository rolesRepository = new roleSelector(carDetails.getType()); 

     try { 
      rolesRepository.save(carDetails); 
     } catch (Exception ex) { 
      return new ResponseEntity<>(HttpStatus.NOT_FOUND); 

     } 
      return new ResponseEntity<>(HttpStatus.OK); 
    } 

Non si d'autre doit être utilisé, il doit être un modèle de stratégie.

+0

Je m'intéresserais plus à l'utilisation de 'new' dans l'application Spring (très probablement, cela ne fonctionnera pas). –

Répondre

0

En fait, c'est déjà un modèle de stratégie: chaque implémentation se comporte différemment et vous utilisez une seule interface pour extraire leurs détails d'implémentation. Ici roleSelector méthode utilise pour créer des instances (comme une usine).

+0

mais en fait ce code ne fonctionne pas, tout ce dont j'ai besoin est de rendre ce modèle exécutable –

+0

Comment ça ne marche pas? Quelle erreur/exception cela vous donne? Pourquoi ne l'avez-vous pas mentionné dans la question? Ma conjecture est que vous avez NullPointerException en raison de l'utilisation de 'new' au lieu d'injecter et d'utiliser des beans à partir de Spring. –

+0

En fait, il y a plusieurs erreurs. L'objet que je passe est carDetails puis en considérant le type que nous devons choisir le référentiel correspondant. Nous devons également changer le type d'objet pour correspondre au référentiel. Comment peut-on faire ça. J'ai essayé de faire l'interface des dépôts mais je ne peux pas le faire. –