//Função que permite receber os dados e criar o modelo public void SubmeterDados(IDados dados, OpcoesExecucao operacao) { try { if (dados.Tipo == TipoDados.Count) { _modelo = new CountMod((CountDados)dados); } else if (dados.Tipo == TipoDados.Alternate) { _modelo = new Union((UnionDados)dados); } else if (dados.Tipo == TipoDados.Concat) { _modelo = new Union((UnionDados)dados); } else if (dados.Tipo == TipoDados.Create) { _modelo = new CreateMod((CreateDados)dados); } else if (dados.Tipo == TipoDados.Protect) { _modelo = new EncriptMod((EncriptDados)dados); } else if (dados.Tipo == TipoDados.Split) { _modelo = new SplitMod((SplitDados)dados); } else if (dados.Tipo == TipoDados.Unprotect) { _modelo = new EncriptMod((EncriptDados)dados); } else if (dados.Tipo == TipoDados.AddPage) { _modelo = new AddPageMod((AddPageDados)dados); } else if (dados.Tipo == TipoDados.RemovePage) { _modelo = new RemoveMod((RemoveDados)dados); } else if (dados.Tipo == TipoDados.WaterMark) { _modelo = new WaterMarkMod((WaterMarkDados)dados); } _ui.Modelo = _modelo; Opcao = operacao; } catch (ExceptionFileNotFound erro) { throw new ExceptionFileNotFound(erro); } catch (ExceptionDadosInvalidos erro) { throw new ExceptionDadosInvalidos(erro); } catch (DllNotFoundException erro) { throw new DllNotFoundException(erro.Message); } }
//Função que executa a funcionalidade public void ProcessarDados(OpcoesExecucao op) { try { switch (op) { case OpcoesExecucao.ContarPaginas: efetuarProcesso = ((CountMod)_modelo).ContarPaginas; break; case OpcoesExecucao.RemoverPagina: efetuarProcesso = ((RemoveMod)_modelo).RemovePage; break; case OpcoesExecucao.AdicionarMarca: efetuarProcesso = ((WaterMarkMod)_modelo).WatermarkFile; break; case OpcoesExecucao.AdicionarPagina: efetuarProcesso = ((AddPageMod)_modelo).AddPage; break; case OpcoesExecucao.Encriptar: efetuarProcesso = ((EncriptMod)_modelo).EncriptarMod; break; case OpcoesExecucao.Decriptar: efetuarProcesso = ((EncriptMod)_modelo).DecriptarMod; break; case OpcoesExecucao.Concatenar: efetuarProcesso = ((Union)_modelo).Concatenar; break; case OpcoesExecucao.Unir: efetuarProcesso = ((Union)_modelo).Alternar; break; case OpcoesExecucao.Criar: efetuarProcesso = ((CreateMod)_modelo).Criar; break; case OpcoesExecucao.SepararFicheiro: efetuarProcesso = ((SplitMod)_modelo).SplitDocument; break; } efetuarProcesso.Invoke(); } catch (ExceptionDadosInvalidos erro) { throw new ExceptionDadosInvalidos(erro); } catch (ExceptionFileNotFound erro) { throw new ExceptionFileNotFound(erro); }catch (DllNotFoundException erro) { throw new DllNotFoundException(erro.Message); } }
//Solicita dados de Unir private void MenuUnir(OpcoesExecucao op) { string caminhoOrigem; string caminhoOrigem2; string caminhoDestino; try{ //Limpa o terminal Console.Clear(); //Solicita os dados ao utilizador caminhoOrigem = this.caminhoOrigem(); Console.WriteLine("Dados do 2º ficheiro:"); caminhoOrigem2 = this.caminhoOrigem(); caminhoDestino = this.caminhoDestino(caminhoOrigem); //Submete os dados no controlador UnionDados dados; //Verifica qual o tipo de união switch (op) { case OpcoesExecucao.Unir: dados = new UnionDados(caminhoOrigem, caminhoOrigem2, caminhoDestino, TipoDados.Alternate); ((IView)this).Controlador.SubmeterDados(dados, op); break; case OpcoesExecucao.Concatenar: dados = new UnionDados(caminhoOrigem, caminhoOrigem2, caminhoDestino, TipoDados.Concat); ((IView)this).Controlador.SubmeterDados(dados, op); break; } }catch (FormatException erro) { Console.WriteLine("Erro: {0}", erro.Message); Console.WriteLine("Clique em qualquer tecla para continua!"); Console.ReadLine(); } }
//Função que mostra os resultados do sucesso da operação public void ExibeResultado(OpcoesExecucao op) { //Verifica qual o tipo de operação executada switch (op) { case OpcoesExecucao.AdicionarPagina: if (((IView)this).Modelo.Resultado) { Console.WriteLine( "Foi adicionada a página {0} do ficheiro {1}, na posição {2} do ficheiro {3}.", ((IView)this).Modelo.Page, ((IView)this).Modelo.FileOrigem2, ((IView)this).Modelo.AddPosition, ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não foi possível adicionar a página ao ficheiro {0}", ((IView)this).Modelo.FileDestino); } break; case OpcoesExecucao.RemoverPagina: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Foi removida a página {0} do ficheiro {1}.", ((IView)this).Modelo.Page, ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não foi possível remover a página do ficheiro {0}", ((IView)this).Modelo.FileDestino); } break; case OpcoesExecucao.AdicionarMarca: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Foi adicionada a seguinte marca de água {0} no ficheiro {1}", ((IView)this).Modelo.Texto, ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não Foi possível adicionar a marca de água no ficheiro {0}", ((IView)this).Modelo.FileDestino); } break; case OpcoesExecucao.Unir: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Ficheiro {0} e {1} foram unidos de forma alternada.", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.FileOrigem2); } else { Console.WriteLine("Não foi possível unir ficheiros {0} e {1}", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.FileOrigem2); } break; case OpcoesExecucao.Concatenar: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Ficheiro {0} e {1} foram concatenados.", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.FileOrigem2); } else { Console.WriteLine("Não foi possível unir ficheiros {0} e {1}", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.FileOrigem2); } break; case OpcoesExecucao.Encriptar: if (((IView)this).Modelo.Resultado) { Console.WriteLine("O ficheiro {0} foi encriptado", ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não foi possível encriptar o ficheiro{0}", ((IView)this).Modelo.FileOrigem); } break; case OpcoesExecucao.Decriptar: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Foi removida a encriptação no ficheiro {0}", ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não foi possível remover encriptação! Senha não é válida."); } break; case OpcoesExecucao.ContarPaginas: if (((IView)this).Modelo.Resultado) { Console.WriteLine("O ficheiro {0} possui {1} páginas.", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.NumPages); } else { Console.WriteLine("Não foi possível contar as páginas do ficheiro {0}", ((IView)this).Modelo.FileOrigem); } break; case OpcoesExecucao.SepararFicheiro: if (((IView)this).Modelo.Resultado) { Console.WriteLine( "O ficheiro {0} foi dividido na página {1} criando os ficheiros {2} e {3}", ((IView)this).Modelo.FileOrigem, ((IView)this).Modelo.Page, ((IView)this).Modelo.FileDestino, ((IView)this).Modelo.FileDestino2); } else { Console.WriteLine("Não foi possível separar o ficheiro {0}", ((IView)this).Modelo.FileOrigem); } break; case OpcoesExecucao.Criar: if (((IView)this).Modelo.Resultado) { Console.WriteLine("Foi adicionada a seguinte texto: {0} \r\nno ficheiro {1}", ((IView)this).Modelo.Texto, ((IView)this).Modelo.FileDestino); } else { Console.WriteLine("Não Foi possível adicionar o texto no2 ficheiro {0}", ((IView)this).Modelo.FileDestino); } break; } }