This document discusses principles of object-oriented design and clear separation of responsibilities in Wicket components. It provides examples of how to structure Wicket panels, forms, validators, renderers, and behaviors to have single, well-defined responsibilities. Behaviors can be written by extending an abstract base class and implementing relevant callback methods. The document emphasizes designing reusable and maintainable components.
The document discusses various methods for accessing and manipulating context nodes and elements in Web Dynpro controllers. It describes how to navigate the context hierarchy to access specific nodes, retrieve element references, and get and set attribute values. It also covers creating new elements, binding elements and structures to nodes, and retrieving all elements in a node as a table. The goal is to understand the context API that can be used for application coding in controllers.
The document discusses Wicket testing and models. It provides an overview of different types of Wicket test classes for components, pages, and forms. It also discusses different model types in Wicket like PropertyModel, LoadableDetachableModel, and how models allow for dynamic updates and serialization. The document then presents examples of using a UserLoadableDetachableModel and FormTester. It also discusses making components more abstract and removing assumptions when designing them. Finally, it introduces the concept of a "CSS component" for creating consistent UI elements through CSS alone.
Morson International Buying Solutions Approved NmncJonathan82
This document provides information about Morson Human Resources' capabilities for providing staffing resources through the Non Medical Non Clinical Resources framework. It includes details on Morson's accreditation, the framework benefits and description, Morson's strengths and experience, key capability areas, and pricing breakdowns for hiring contractors at different pay bands. The framework allows public sector clients to hire temporary and contract staff across a wide range of white and blue collar roles.
This document provides 10 tips for using a learning management system (LMS) over a 10 year period. The tips are to get real, get personal, get individual, get visual, get virtual, get data, get communicating, get creative, get modeling, and get together. It encourages using videos, live help, shopping experiences, dynamic searches, rethinking pedagogy, using more multimedia, ensuring the LMS looks good and is easy to use, using data to reward and encourage users, communicating through blogs and social media, and collaborating internally and externally.
This presentation is about doing Scala with Wicket. The basics of Scala are handled with a simple Hello World application. After that I explain some functional concepts and show a basic Wicket application written in Scala.
Daan van Etten gave this presentation at the ApacheCon Wicket meetup in Amsterdam, March 24, 2009. You can find the mentioned source code at http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009
The document discusses different digital formats for presenting the Bayeux Tapestry and their advantages and disadvantages. It compares presenting the tapestry on the web, CD-Rom, and in Second Life. It finds that Second Life allows for the most immersive experience where visitors can view the entire tapestry layout and compare drawings to the original, but scale and screen limitations still apply. The document also outlines basic tools for guiding visitors and examples of virtual exhibits in Dresden and Assisi. It encourages visiting the in-world Second Life presentation and thanks listeners.
The document discusses various methods for accessing and manipulating context nodes and elements in Web Dynpro controllers. It describes how to navigate the context hierarchy to access specific nodes, retrieve element references, and get and set attribute values. It also covers creating new elements, binding elements and structures to nodes, and retrieving all elements in a node as a table. The goal is to understand the context API that can be used for application coding in controllers.
The document discusses Wicket testing and models. It provides an overview of different types of Wicket test classes for components, pages, and forms. It also discusses different model types in Wicket like PropertyModel, LoadableDetachableModel, and how models allow for dynamic updates and serialization. The document then presents examples of using a UserLoadableDetachableModel and FormTester. It also discusses making components more abstract and removing assumptions when designing them. Finally, it introduces the concept of a "CSS component" for creating consistent UI elements through CSS alone.
Morson International Buying Solutions Approved NmncJonathan82
This document provides information about Morson Human Resources' capabilities for providing staffing resources through the Non Medical Non Clinical Resources framework. It includes details on Morson's accreditation, the framework benefits and description, Morson's strengths and experience, key capability areas, and pricing breakdowns for hiring contractors at different pay bands. The framework allows public sector clients to hire temporary and contract staff across a wide range of white and blue collar roles.
This document provides 10 tips for using a learning management system (LMS) over a 10 year period. The tips are to get real, get personal, get individual, get visual, get virtual, get data, get communicating, get creative, get modeling, and get together. It encourages using videos, live help, shopping experiences, dynamic searches, rethinking pedagogy, using more multimedia, ensuring the LMS looks good and is easy to use, using data to reward and encourage users, communicating through blogs and social media, and collaborating internally and externally.
This presentation is about doing Scala with Wicket. The basics of Scala are handled with a simple Hello World application. After that I explain some functional concepts and show a basic Wicket application written in Scala.
Daan van Etten gave this presentation at the ApacheCon Wicket meetup in Amsterdam, March 24, 2009. You can find the mentioned source code at http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009
The document discusses different digital formats for presenting the Bayeux Tapestry and their advantages and disadvantages. It compares presenting the tapestry on the web, CD-Rom, and in Second Life. It finds that Second Life allows for the most immersive experience where visitors can view the entire tapestry layout and compare drawings to the original, but scale and screen limitations still apply. The document also outlines basic tools for guiding visitors and examples of virtual exhibits in Dresden and Assisi. It encourages visiting the in-world Second Life presentation and thanks listeners.
Functional components in Vue.js do not maintain internal state or instance and are used to improve performance. They access data through a "context" parameter passed to the render function, including props, slots, and listeners. Functional components are best for presentational components like buttons and tags, higher order components, and items in loops. They cannot reference methods or computed properties internally.
This document discusses several React patterns including compositional components, higher order components, render props, presentational and container components, child aware components, and child enhancing components. Compositional components allow code reuse through composition instead of inheritance. Higher order components accept a component and return an enhanced one. Render props share code through a prop whose value is a function. Presentational components focus on UI while container components manage data and logic. Child aware components interrogate child components' data through props and selectors. Child enhancing components add functionality to child components.
Poonam pursued her Masters in Computer Science from Northeastern University and joined Intuit in 2014. She is currently working as an iOS/Front End engineer at TurboTax and is passionate about accessibility. Her hobbies include cooking and traveling with close ones. She presented on React accessibility at CSUN 2018, covering topics like managing page title and focus, testing accessibility, and tools to support accessible development.
This document provides an overview and introduction to React. It discusses components, JSX syntax, the virtual DOM, rendering, state and props, and the component lifecycle. It also includes examples of building components, integrating with APIs, and where to go from the basics. The key topics covered are building reusable UI with components, using JSX to write HTML-like code, how the virtual DOM enables efficient re-rendering, updating the UI via state and props, and the various lifecycle methods components can implement. Hands-on examples demonstrate basic components, fetching external data, and managing state.
Learn React hooks best practices which you should follow in 2022. You will know the some of the best tricks to use the React hooks in 2022. Read the complete article for more insights.
Common design principles and design patterns in automation testingKMS Technology
The document discusses common design principles and patterns used in automation testing. It covers the SOLID principles: single responsibility, open/closed, Liskov substitution, interface segregation, and dependency inversion. It also discusses the DRY principle and avoiding duplicate code. For design patterns, it describes the page object model (POM) pattern for organizing web page elements and tests. It also discusses using fluent interfaces with the POM pattern. The presentation provides examples and explanations of how to apply these principles and patterns when writing automation tests.
React js is a free and open-source front-end JavaScript library for building user interfaces based on UI components. It allows creating reusable UI components that can be nested to build complex applications. A React component may maintain internal state and re-render when data changes. React uses a declarative paradigm that makes code more predictable and easier to debug.
To use React, install Node packages and create a new project using create-react-app. Components let you break up the UI into reusable pieces responsible for rendering HTML. Components can be stateful class components or stateless function components. Components can be created using ES6 class syntax or function syntax and can be nested. Choosing between class and function depends on requirements like using
The document provides an overview of key concepts and features in Rational Application Developer (RAD) including workspaces, perspectives, views, editors, projects, importing/exporting, preferences, and help resources. It describes how to create and manage workspaces and projects, customize perspectives, display different views, compare and replace files, and get assistance through the help menu.
The document provides information on how to become a Vaadin expert by attending official Vaadin trainings to learn best practices, application architecture, and new features. It recommends taking the Vaadin certification exam to boost your career and become a Vaadin Certified Developer. Additional steps suggested include developing skills by building Java web applications, reading documentation, and signing up for trainings and certification.
This document discusses developing Windows and web applications using Visual Studio .NET. It covers topics like C# versions, LINQ, data access with LINQ, user experience best practices, Windows Forms capabilities and demos. The agenda includes sessions on business applications, user experience, who applications need to please, and Windows Forms best practices. It also discusses prototypes, choosing between rich client and browser-based solutions, and testing.
Metamorphosis from Forms to Java: A technical lead's perspective, part IIMichael Fons
This document provides an overview of key concepts for transitioning from Forms development to Java and ADF, including deployment, the MVC pattern, beans, GUI components, collections vs iterators, and tips. It includes 11 demo sections walking through creating a basic model and UI, visual designer, bindings, passing data between pages, authorization, and extending the framework. The summaries aim to highlight the main topics covered in each section at a high level.
At its basic core, the Salesforce Console is an Application Framework that can be leveraged to present all relevant details in context in a single page presentation, integrate with third-party applications, connect with customers via telephony, Live Agent Web chat, and Knowledge integration. Join us to learn about the Salesforce console Integration toolkit, as well as other declarative and programmatic options available to customize and get the most from the Salesforce Console.
POS 408 Creative and Effective/newtonhelp.commyblue99
For more course tutorials visit
www.newtonhelp.com
POS 408 Assignment Week 1 Individual Console Display Message
POS 408 Assignment Week 2 Learning Team Methods Can Help with Maintenance
For more course tutorials visit
www.newtonhelp.com
POS 408 Assignment Week 1 Individual Console Display Message
POS 408 Assignment Week 2 Learning Team Methods Can Help with Maintenance
This document outlines the assignments for POS 408 over 5 weeks. It includes individual assignments to build a C# console application with variables, branching, error handling, and data structures. It also includes learning team assignments to discuss coding standards, understand bitwise operators, apply inheritance with classes, and save objects to files. Students are instructed to complete the assignments in Visual Studio and submit ZIP files for grading.
This document provides an overview and recap of React.js concepts for a web programming course. It covers React components and subcomponents, one-way data flow, properties and states, parent/child relationships, mapping and filtering arrays, updating and removing child components, and the React component lifecycle. It also provides instructions for an exercise to create a bulletin board app with React, including adding, editing, removing notes and comments.
Define and Manage Requirements with IBM Rational Requirements ComposerAlan Kan
The document provides an overview of a hands-on lab session on IBM Rational Requirements Composer (RRC). The lab aims to demonstrate how RRC can help teams collaborate to define, manage and trace requirements across the software development lifecycle. The lab covers topics like importing and linking requirements, modeling business processes and use cases, conducting reviews, and generating work items and test cases from requirements. Known issues encountered in the labs are also documented.
Patterns (contd)Software Development ProcessDesign patte.docxdanhaley45372
Patterns (contd)
Software Development Process
Design patterns used to handle change
More time extending and changing code than developing it.
The Strategy design pattern handle change by selecting from a family of external algorithms rather than rewrite.
Design point: Make code closed for modification of code, but open for extension
Problem
Computer object created
Description Method returns
Getting a Computer
Problem
Program has to change every time
Customer changes options
Decorator Pattern
Wrapper code used to extend your core code
Extend a class dynamically at runtime
Decorator uses wrapper code to extend core functionality - decorating the code
Decorator Pattern
description() returns “You are getting a computer”
Wrapper description() returns
“You are getting a computer and a disk”
Wrapper description() returns
“You are getting a computer and a disk and a monitor”
Decorator Pattern
Core component: Computer
Variables holding computer objects should also be able to hold objects that wrap computer objects.
Extend the wrapper classes from the Computer class.
Abstract class cannot be instantiated
Ensures all wrappers are consistent
Developers have to provide their own description
Decorator Pattern
Method calls the core computer object’s
description method and adds “and a disk”
Decorator Pattern
Method calls the core computer object’s
description method and adds “and a disk”
Extend the core object by wrapping it in decorator wrappers. Avoids modification of the core code.
Each successive wrapper called the description method of the object it wrapped and added something to it.
Factory Pattern
Based on type, call the
Connection method
Factory Pattern
Create a method that returns the
correct connection type
Factory Pattern
New operator used to create OracleConnection objects.
New operator used to create SqlServerConnection objects, and MySqlConnection objects.
New operator to instantiate many different concrete classes
Code becomes larger and needs to be replicated in many places
Factor that code out into a method.
Code keeps changing
Encapsulate code into a factory object
Goal: Separate out the changeable code and leave the core code closed for modification
Building the Factory
Creating the Factory
FirstFactory class encapsulates the connection object creation
Pass to it the type of connection (“Oracle”, “SQL Server”,)
Use the factory object to create connection objects with a factory method named createConnection
Building the Factory
Create the FirstFactory class.
Save the type of the database, passed to the FirstFactory class’s constructor.
Object-creation code changes
Check which type of object to be created
(OracleConnection, SqlServerConnection,
and then create it.
Factory Class
Create the Abstract Connection Class
Core code should not be modified or has to be modified
as little as possible.
Using the connection object returned by the
new factory object
Use t.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Functional components in Vue.js do not maintain internal state or instance and are used to improve performance. They access data through a "context" parameter passed to the render function, including props, slots, and listeners. Functional components are best for presentational components like buttons and tags, higher order components, and items in loops. They cannot reference methods or computed properties internally.
This document discusses several React patterns including compositional components, higher order components, render props, presentational and container components, child aware components, and child enhancing components. Compositional components allow code reuse through composition instead of inheritance. Higher order components accept a component and return an enhanced one. Render props share code through a prop whose value is a function. Presentational components focus on UI while container components manage data and logic. Child aware components interrogate child components' data through props and selectors. Child enhancing components add functionality to child components.
Poonam pursued her Masters in Computer Science from Northeastern University and joined Intuit in 2014. She is currently working as an iOS/Front End engineer at TurboTax and is passionate about accessibility. Her hobbies include cooking and traveling with close ones. She presented on React accessibility at CSUN 2018, covering topics like managing page title and focus, testing accessibility, and tools to support accessible development.
This document provides an overview and introduction to React. It discusses components, JSX syntax, the virtual DOM, rendering, state and props, and the component lifecycle. It also includes examples of building components, integrating with APIs, and where to go from the basics. The key topics covered are building reusable UI with components, using JSX to write HTML-like code, how the virtual DOM enables efficient re-rendering, updating the UI via state and props, and the various lifecycle methods components can implement. Hands-on examples demonstrate basic components, fetching external data, and managing state.
Learn React hooks best practices which you should follow in 2022. You will know the some of the best tricks to use the React hooks in 2022. Read the complete article for more insights.
Common design principles and design patterns in automation testingKMS Technology
The document discusses common design principles and patterns used in automation testing. It covers the SOLID principles: single responsibility, open/closed, Liskov substitution, interface segregation, and dependency inversion. It also discusses the DRY principle and avoiding duplicate code. For design patterns, it describes the page object model (POM) pattern for organizing web page elements and tests. It also discusses using fluent interfaces with the POM pattern. The presentation provides examples and explanations of how to apply these principles and patterns when writing automation tests.
React js is a free and open-source front-end JavaScript library for building user interfaces based on UI components. It allows creating reusable UI components that can be nested to build complex applications. A React component may maintain internal state and re-render when data changes. React uses a declarative paradigm that makes code more predictable and easier to debug.
To use React, install Node packages and create a new project using create-react-app. Components let you break up the UI into reusable pieces responsible for rendering HTML. Components can be stateful class components or stateless function components. Components can be created using ES6 class syntax or function syntax and can be nested. Choosing between class and function depends on requirements like using
The document provides an overview of key concepts and features in Rational Application Developer (RAD) including workspaces, perspectives, views, editors, projects, importing/exporting, preferences, and help resources. It describes how to create and manage workspaces and projects, customize perspectives, display different views, compare and replace files, and get assistance through the help menu.
The document provides information on how to become a Vaadin expert by attending official Vaadin trainings to learn best practices, application architecture, and new features. It recommends taking the Vaadin certification exam to boost your career and become a Vaadin Certified Developer. Additional steps suggested include developing skills by building Java web applications, reading documentation, and signing up for trainings and certification.
This document discusses developing Windows and web applications using Visual Studio .NET. It covers topics like C# versions, LINQ, data access with LINQ, user experience best practices, Windows Forms capabilities and demos. The agenda includes sessions on business applications, user experience, who applications need to please, and Windows Forms best practices. It also discusses prototypes, choosing between rich client and browser-based solutions, and testing.
Metamorphosis from Forms to Java: A technical lead's perspective, part IIMichael Fons
This document provides an overview of key concepts for transitioning from Forms development to Java and ADF, including deployment, the MVC pattern, beans, GUI components, collections vs iterators, and tips. It includes 11 demo sections walking through creating a basic model and UI, visual designer, bindings, passing data between pages, authorization, and extending the framework. The summaries aim to highlight the main topics covered in each section at a high level.
At its basic core, the Salesforce Console is an Application Framework that can be leveraged to present all relevant details in context in a single page presentation, integrate with third-party applications, connect with customers via telephony, Live Agent Web chat, and Knowledge integration. Join us to learn about the Salesforce console Integration toolkit, as well as other declarative and programmatic options available to customize and get the most from the Salesforce Console.
POS 408 Creative and Effective/newtonhelp.commyblue99
For more course tutorials visit
www.newtonhelp.com
POS 408 Assignment Week 1 Individual Console Display Message
POS 408 Assignment Week 2 Learning Team Methods Can Help with Maintenance
For more course tutorials visit
www.newtonhelp.com
POS 408 Assignment Week 1 Individual Console Display Message
POS 408 Assignment Week 2 Learning Team Methods Can Help with Maintenance
This document outlines the assignments for POS 408 over 5 weeks. It includes individual assignments to build a C# console application with variables, branching, error handling, and data structures. It also includes learning team assignments to discuss coding standards, understand bitwise operators, apply inheritance with classes, and save objects to files. Students are instructed to complete the assignments in Visual Studio and submit ZIP files for grading.
This document provides an overview and recap of React.js concepts for a web programming course. It covers React components and subcomponents, one-way data flow, properties and states, parent/child relationships, mapping and filtering arrays, updating and removing child components, and the React component lifecycle. It also provides instructions for an exercise to create a bulletin board app with React, including adding, editing, removing notes and comments.
Define and Manage Requirements with IBM Rational Requirements ComposerAlan Kan
The document provides an overview of a hands-on lab session on IBM Rational Requirements Composer (RRC). The lab aims to demonstrate how RRC can help teams collaborate to define, manage and trace requirements across the software development lifecycle. The lab covers topics like importing and linking requirements, modeling business processes and use cases, conducting reviews, and generating work items and test cases from requirements. Known issues encountered in the labs are also documented.
Patterns (contd)Software Development ProcessDesign patte.docxdanhaley45372
Patterns (contd)
Software Development Process
Design patterns used to handle change
More time extending and changing code than developing it.
The Strategy design pattern handle change by selecting from a family of external algorithms rather than rewrite.
Design point: Make code closed for modification of code, but open for extension
Problem
Computer object created
Description Method returns
Getting a Computer
Problem
Program has to change every time
Customer changes options
Decorator Pattern
Wrapper code used to extend your core code
Extend a class dynamically at runtime
Decorator uses wrapper code to extend core functionality - decorating the code
Decorator Pattern
description() returns “You are getting a computer”
Wrapper description() returns
“You are getting a computer and a disk”
Wrapper description() returns
“You are getting a computer and a disk and a monitor”
Decorator Pattern
Core component: Computer
Variables holding computer objects should also be able to hold objects that wrap computer objects.
Extend the wrapper classes from the Computer class.
Abstract class cannot be instantiated
Ensures all wrappers are consistent
Developers have to provide their own description
Decorator Pattern
Method calls the core computer object’s
description method and adds “and a disk”
Decorator Pattern
Method calls the core computer object’s
description method and adds “and a disk”
Extend the core object by wrapping it in decorator wrappers. Avoids modification of the core code.
Each successive wrapper called the description method of the object it wrapped and added something to it.
Factory Pattern
Based on type, call the
Connection method
Factory Pattern
Create a method that returns the
correct connection type
Factory Pattern
New operator used to create OracleConnection objects.
New operator used to create SqlServerConnection objects, and MySqlConnection objects.
New operator to instantiate many different concrete classes
Code becomes larger and needs to be replicated in many places
Factor that code out into a method.
Code keeps changing
Encapsulate code into a factory object
Goal: Separate out the changeable code and leave the core code closed for modification
Building the Factory
Creating the Factory
FirstFactory class encapsulates the connection object creation
Pass to it the type of connection (“Oracle”, “SQL Server”,)
Use the factory object to create connection objects with a factory method named createConnection
Building the Factory
Create the FirstFactory class.
Save the type of the database, passed to the FirstFactory class’s constructor.
Object-creation code changes
Check which type of object to be created
(OracleConnection, SqlServerConnection,
and then create it.
Factory Class
Create the Abstract Connection Class
Core code should not be modified or has to be modified
as little as possible.
Using the connection object returned by the
new factory object
Use t.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
Dive into the realm of operating systems (OS) with Pravash Chandra Das, a seasoned Digital Forensic Analyst, as your guide. 🚀 This comprehensive presentation illuminates the core concepts, types, and evolution of OS, essential for understanding modern computing landscapes.
Beginning with the foundational definition, Das clarifies the pivotal role of OS as system software orchestrating hardware resources, software applications, and user interactions. Through succinct descriptions, he delineates the diverse types of OS, from single-user, single-task environments like early MS-DOS iterations, to multi-user, multi-tasking systems exemplified by modern Linux distributions.
Crucial components like the kernel and shell are dissected, highlighting their indispensable functions in resource management and user interface interaction. Das elucidates how the kernel acts as the central nervous system, orchestrating process scheduling, memory allocation, and device management. Meanwhile, the shell serves as the gateway for user commands, bridging the gap between human input and machine execution. 💻
The narrative then shifts to a captivating exploration of prominent desktop OSs, Windows, macOS, and Linux. Windows, with its globally ubiquitous presence and user-friendly interface, emerges as a cornerstone in personal computing history. macOS, lauded for its sleek design and seamless integration with Apple's ecosystem, stands as a beacon of stability and creativity. Linux, an open-source marvel, offers unparalleled flexibility and security, revolutionizing the computing landscape. 🖥️
Moving to the realm of mobile devices, Das unravels the dominance of Android and iOS. Android's open-source ethos fosters a vibrant ecosystem of customization and innovation, while iOS boasts a seamless user experience and robust security infrastructure. Meanwhile, discontinued platforms like Symbian and Palm OS evoke nostalgia for their pioneering roles in the smartphone revolution.
The journey concludes with a reflection on the ever-evolving landscape of OS, underscored by the emergence of real-time operating systems (RTOS) and the persistent quest for innovation and efficiency. As technology continues to shape our world, understanding the foundations and evolution of operating systems remains paramount. Join Pravash Chandra Das on this illuminating journey through the heart of computing. 🌟
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on automated letter generation for Bonterra Impact Management using Google Workspace or Microsoft 365.
Interested in deploying letter generation automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
4. I think most programmers spend
the first 5 years of their career
mastering complexity, and the rest
of their lives learning simplicity.
— BUZZ ANDERSEN
5.
6. Architecture Reusability and
overview maintainability
Layout / logic
Old to new
separation
BluePrint Resources
12. Do not use SpringBean in generic UI components.
(try a constructor argument instead)
13. Do not use SpringBean in generic UI components.
(try a constructor argument instead)
(If you do, the @SpringBean will be a hidden
dependency when you add a generic component)
14. Only use the ‘name’ argument when there
are multiple beans that implement the same
interface.
@SpringBean (name = “selector”)
private GenericService m_genericService;
15. public class SomePanel extends Panel {
@SpringBean
private UserService m_userService;
@SpringBean
private TranslationService m_translationService;
27. Principles of Object Oriented Design
The first five principles are principles of class design:
SRP
The Single Responsibility Principle
A class should have one, and only one, reason to change.
OCP
The Open Closed Principle
You should be able to extend a classes behavior, without modifying it.
LSP
The Liskov Substitution Principle
Derived classes must be substitutable for their base classes.
DIP
The Dependency Inversion Principle
Depend on abstractions, not on concretions.
ISP
The Interface Segregation Principle
Make fine grained interfaces that are client specific.
29. Tools for clear responsibilities
Page
Panel
Form
Validator
Renderer
DataProvider
Behavior
30. Tools for clear responsibilities
Page Provides high level layout
only reusable by extending, so
do not implement reusable logic in Page!
31. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Panel is very good for reuse!
Just make sure your interface is clear, and
your Panel does not contain too much
knowledge.
32. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Panel is very good for reuse!
The interface of a Panel is the
combination of all the public and
protected methods.
Think about reuse!
33. Panel
“a class should do one thing”
Single Responsibility Principle
In the context of the Single Responsibility Principle,
responsibility is “a reason for change.” If you can think of
more than one motive for changing a class, then that class
has more than one responsibility. Another way to put it:
“a class should do one thing (and be good at it)”
https://wiki.cordys.com/display/edv/How+to+write+a+good+Wicket+component
35. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel.
Think: should your Form really
implement the Save of an object?
36. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel.
Think: should your Form really
implement the Save of an object?
Is reuse possible if you want the same Form for:
creating new object / edit existing object?
37. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
38. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Validations should only do Validation.
39. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Validations should only do Validation.
Have a clear separation between
Validation and Behavior!
40. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Renderer Render a given Object to a string representation
41. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Renderer Render a given Object to a string representation
Renderer: do rendering only! No logic,
no filtering, nothing. Just render.
42. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Renderer Render a given Object to a string representation
DataProvider Provide the right data based on given input.
43. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Renderer Render a given Object to a string representation
DataProvider Provide the right data based on given input.
No rendering, no updating of
FeedbackPanels or Toolbar.
44. Tools for clear responsibilities
Page Provides high level layout
Panel Implement logic of a clearly separated part of a page
Form, put your FeedbackPanel in here and handle
Form logic of submitting and refreshing FeedbackPanel
Validator Handle validation of a FormComponent or a Form
Renderer Render a given Object to a string representation
DataProvider Provide the right data based on given input.
Behavior Behaviors are plugins for components. They can
provide custom markup, custom pieces of logic.
Think of them as decorators.
46. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
1. Choose the most appropriate base class
All Known Implementing Classes:
AbstractAjaxBehavior, AbstractAjaxTimerBehavior, AbstractAutoCompleteBehavior, AbstractBehavior,
AbstractDefaultAjaxBehavior, AbstractHeaderContributor, AbstractTransformerBehavior,
AjaxEditableLabel.EditorAjaxBehavior, AjaxEditableLabel.LabelAjaxBehavior, AjaxEventBehavior,
AjaxFormChoiceComponentUpdatingBehavior, AjaxFormComponentUpdatingBehavior, AjaxFormSubmitBehavior,
AjaxFormValidatingBehavior, AjaxIndicatorAppender, AjaxPagingNavigationBehavior,
AjaxSelfUpdatingTimerBehavior, AttributeAppender, AttributeModifier, AutoCompleteBehavior,
BodyTagAttributeModifier, ContainerWithAssociatedMarkupHelper, ContextPathGenerator, DatePicker,
HeaderContributor, OnChangeAjaxBehavior, OrderByLink.CssModifier, SimpleAttributeModifier,
StringHeaderContributor, TextTemplateHeaderContributor, VelocityContributor, VelocityHeaderContributor,
VelocityJavascriptContributor, WicketAjaxIndicatorAppender, WicketMessageTagHandler.AttributeLocalizer,
XsltTransformerBehavior
47. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
2. Extend from your chosen base class
public class MyBehavior extends AbstractBehavior {
..
}
48. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
49. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component)
Called when a component that has this behavior
coupled was rendered.
50. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component)
Called when a component that has this behavior
coupled was rendered.
bind(Component component)
Bind this handler to the given component.
51. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component)
Called when a component that has this behavior
coupled was rendered.
bind(Component component)
Bind this handler to the given component.
beforeRender(Component component)
Called when a component is about to render.
52. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component)
Called when a component that has this behavior
coupled was rendered.
bind(Component component)
Bind this handler to the given component.
beforeRender(Component component)
Called when a component is about to render.
cleanup()
This method is called either by onRendered
(Component) or onException(Component,
RuntimeException) AFTER they called their respective
template methods.
53. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component) onRendered(Component component)
Called when a component that has this behavior Called when a component that has this behavior
coupled was rendered. coupled was rendered.
bind(Component component)
Bind this handler to the given component.
beforeRender(Component component)
Called when a component is about to render.
cleanup()
This method is called either by onRendered
(Component) or onException(Component,
RuntimeException) AFTER they called their respective
template methods.
54. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component) onRendered(Component component)
Called when a component that has this behavior Called when a component that has this behavior
coupled was rendered. coupled was rendered.
bind(Component component) isTemporary()
Bind this handler to the given component. Specifies whether or not this behavior is temporary.
beforeRender(Component component)
Called when a component is about to render.
cleanup()
This method is called either by onRendered
(Component) or onException(Component,
RuntimeException) AFTER they called their respective
template methods.
55. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component) onRendered(Component component)
Called when a component that has this behavior Called when a component that has this behavior
coupled was rendered. coupled was rendered.
bind(Component component) isTemporary()
Bind this handler to the given component. Specifies whether or not this behavior is temporary.
onComponentTag(Component component,
beforeRender(Component component) ComponentTag tag)
Called when a component is about to render. Called any time a component that has this behavior
registered is rendering the component tag.
cleanup()
This method is called either by onRendered
(Component) or onException(Component,
RuntimeException) AFTER they called their respective
template methods.
56. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
3. Decide which methods to implement
afterRender(Component component) onRendered(Component component)
Called when a component that has this behavior Called when a component that has this behavior
coupled was rendered. coupled was rendered.
bind(Component component) isTemporary()
Bind this handler to the given component. Specifies whether or not this behavior is temporary.
onComponentTag(Component component,
beforeRender(Component component) ComponentTag tag)
Called when a component is about to render. Called any time a component that has this behavior
registered is rendering the component tag.
cleanup()
detach(Component component)
This method is called either by onRendered
(Component) or onException(Component, Allows the behavior to detach any state it has
RuntimeException) AFTER they called their respective attached during request processing.
template methods.
57. Tools for clear responsibilities: Behaviors
Learn to write your own in 4 steps!
4. Implement your behavior!
public class AjaxFocusBehavior extends AbstractBehavior {
private Component m_component;
@Override
public void bind(Component component) {
this.m_component = component;
component.setOutputMarkupId(true);
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.renderOnLoadJavascript("document.getElementById('" + m_component.getMarkupId() + "').focus()");
}
/**
* {@inheritDoc}
*/
@Override
public boolean isTemporary() {
return true;
}
60. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
61. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
PizzaAutoSuggestRenderer renderer = new PizzaAutoSuggestRenderer();
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
62. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
PizzaAutoSuggestRenderer renderer = new PizzaAutoSuggestRenderer();
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
renderer.setOnSelectJavascriptProvider(autocomplete);
63. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
PizzaAutoSuggestRenderer renderer = new PizzaAutoSuggestRenderer();
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
renderer.setOnSelectJavascriptProvider(autocomplete);
autocomplete.add(new PlaceHolderTextBehavior(Model.of("Search for pizza...")));
64. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
PizzaAutoSuggestRenderer renderer = new PizzaAutoSuggestRenderer();
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
renderer.setOnSelectJavascriptProvider(autocomplete);
autocomplete.add(new PlaceHolderTextBehavior(Model.of("Search for pizza...")));
autocomplete.add(new AjaxSelectTextOnClickBehavior());
65. Composing an AutoCompleteField
AutoCompleteChoicesProvider<Long, Pizza> choicesProvider = new PizzaAutoCompleteChoicesProvider
(m_pizzaService);
PizzaAutoSuggestRenderer renderer = new PizzaAutoSuggestRenderer();
AutoCompleteField<Long, Pizza> autocomplete = new AutoCompleteField<Long, Pizza>(id, model, choicesProvider,
renderer, settings);
renderer.setOnSelectJavascriptProvider(autocomplete);
autocomplete.add(new PlaceHolderTextBehavior(Model.of("Search for pizza...")));
autocomplete.add(new AjaxSelectTextOnClickBehavior());
autocomplete.add(new RequiredValidator<Pizza>());
66. Give your classes clear names.
If it’s a page, call it Page
(example: LoginPage instead of Login)
If it’s a panel, call it Panel
(example: LoginPanel instead of Login)
The same goes for Form,
Validator, Renderer, etcetera.
68. Use wicket:message instead of Label
(for simple translations)
<wicket:message key="SELECT_LANGUAGE_LABEL"/>
69. Use wicket:message instead of Label
(for simple translations)
<wicket:message key="SELECT_LANGUAGE_LABEL"/>
Put this in your HTML and it will be replaced by
Wicket for the translation in your property file.
70. Use wicket:message instead of Label
(for simple translations)
<input type="button" wicket:id="someid" wicket:message="value:CHANGE" />
71. Use wicket:message instead of Label
(for simple translations)
<input type="button" wicket:id="someid" wicket:message="value:CHANGE" />
Wicket will add a ‘value’ attribute and
set it to the localized value!
76. Smell 1
Class names containing:
*With*
*Without*
public class CheckBoxWithoutLabel extends CheckBox
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel>
Duplicated code hierarchies are ugly...
78. Yes, we also have something like a
LabelWithoutLabel:
position = LabelPosition.NONE;
LabeledComponent<Label> lbl = new
LabeledComponent<Label>(property,
dopmd.getTranslationKey(), position, label);
80. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
81. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
public CheckBox(String translationKey, IModel<Boolean> model) {
this(null, translationKey, model);
}
82. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
public CheckBox(String id, String translationKey, IModel<Boolean> model) {
this(id, translationKey, LabelPosition.RIGHT, model);
}
83. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
public CheckBox(String translationKey, LabelPosition position, IModel<Boolean> model) {
this(null, translationKey, position, model);
}
84. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
public CheckBox(String id, String translationKey, LabelPosition position, IModel<Boolean> model) {
super(id, translationKey, position, new CheckBoxWithoutLabel(id + "CheckBox", model));
getLabel().addCssClass("checkBoxWithLabel");
}
85. Smell 3
many constructors
public class CheckBox extends LabeledComponent<CheckBoxWithoutLabel> {
private static final long serialVersionUID = -8246992163993958051L;
public CheckBox(IModel<Boolean> model) {
this(null, model);
}
87. Smell 5
FeedbackPanel not inside Form
Page page = (Page) event.getPage();
event.refreshComponents(m_grid, page.getFeedbackPanel());
88. Smell 5
Refreshing FeedbackPanel, Toolbar or
other classes from unexpected locations
// Refresh the toolbar
if (getPage() instanceof Page) {
ToolBar tb = (ToolBar) ((Page) getPage()).getComponent("toolbar");
if (tb != null) {
target.addComponent(tb);
}
}
89. Smell 6
Casting
// Refresh the toolbar
if (getPage() instanceof Page) {
ToolBar tb = (ToolBar) ((Page) getPage()).getComponent("toolbar");
if (tb != null) {
target.addComponent(tb);
}
}
90. Smell 7
Using getParent()
public void setButtonBar(ButtonBar buttonBar) {
if (!buttonBar.getId().equals(s_buttonPanel)) {
throw new WicketRuntimeException("Buttonbar id is wrong.");
}
if (m_buttonBarPanel.getParent() == null) {
if (m_form.get(s_buttonPanel) != null) {
m_form.get(s_buttonPanel)
.replaceWith(m_buttonBarPanel);
} else {
m_form.add(m_buttonBarPanel);
}
}
m_buttonBarPanel.replaceWith(buttonBar);
}
91. Smell 8
Getting components
from the Page
ToolBar tb = (ToolBar) ((Page) getPage()).getComponent("toolbar");
92. Smell 9
Doing layout and styling in Java
ColumnLayoutContainer pptfContainer = new ColumnLayoutContainer("proofPaidTuitionFeeContainer")
.addComponent(sourceLabel, Size.percent(30))
.addComponent(amountLabel, Size.percent(30))
.addComponent(factory.createDateTimeLabel("dateTime", m_dateTimeModel,
LabelPosition.TOP, m_controller.getTimeZoneCurrentUser()))
.newLine();
93. Smell 10
Using onBeforeRender() too often
protected void onBeforeRender() {
super.onBeforeRender();
if (isEnabled()) {
AjaxRequestTarget target = AjaxRequestTarget.get();
if (target != null) {
target.appendJavascript(TextTemplateHeaderContributor.forPlainJs(s_textTemplate,
getHeaderContributor(false)).toString());
} else {
add(TextTemplateHeaderContributor.forJavaScript(s_textTemplate,
getHeaderContributor(true)));
}
}
}
tip: check onConfigure()
(and in this case: check IHeaderContributor)
97. Smell 11
Calling ResourceModel.getObject()
feedback.info(new ResourceModel(XTranslation.PROPERTY).getObject());
feedback.info(getString(XTranslation.PROPERTY));
Call getString only outside constructor!
(check methods that are called by the constructor)
98. Smell 11
Calling ResourceModel.getObject()
feedback.info(new ResourceModel(XTranslation.PROPERTY).getObject());
feedback.info(getString(XTranslation.PROPERTY));
Call getString only outside constructor!
(check methods that are called by the constructor)
Tried to retrieve a localized string for a component that has not yet been added to the page. This can sometimes lead to an invalid or
no localized resource returned. Make sure you are not calling Component#getString() inside your Component's constructor. Offending
component: [MarkupContainer [Component id = panelmenu, page = <No Page>, path = panelmenu.PanelMenu]]